web-dev-qa-db-ja.com

$ wpdbを使って投稿にフォームを挿入する

私は以下の形式を取り、投稿に挿入するために$ wpdbを使用したいと思います。クラス参照ページのINSERT行を読んでみましたが、何を参照すればよいのか本当にわかりません。 $ wpdbを使用して投稿にデータを挿入するようにフォームに指示する方法がわかりません。

<?php
if (isset($_POST['pickup-form']))
{
    // Clean POST data
    $demo_input = (isset($_POST['demo-input'])) ? trim((string) $_POST['demo-input']) : '';

    // Validate POST data
    if ('' === $demo_input)
    {
        $errors['demo_input'] = __('Demo field is required');
    }

    // No errors
    if (empty($errors))
    {
        // Save POST data to database, send some e-mails, etc.
        $success = TRUE;
    }
}
?>

<?php if ( ! empty($success)) { ?>

    <p>Thank you!</p>

<?php } else { ?>

    <?php if ( ! empty($errors)) { ?>
        <?php print_r($errors) ?>
    <?php } ?>

    <form method="post" action="">
        <input type="hidden" name="pickup-form">
        <input type="text" name="demo-input" value="<?php if (isset($demo_input)) { echo esc_attr($demo_input); } ?>">
        <input type="submit">
    </form>

<?php } ?>
1
Anders Kitson

コードの成功部分では、投稿を表す配列を作成して、wp_insert_postをそのまま使用できます。

 $mypost = array(
      'post_title' => 'My Title',
      'post_type' => 'page'
      //... add other fields according to your form
 );

 $mypost_id = wp_insert_post( $mypost ); //Returns new post id on success

あなたが指定しないどんなフィールドでもWordPressによって自動的に埋められるでしょう。

編集

カスタムフィールドについては、 add_post_meta を参照してください。

 $mypost_id = wp_insert_post( $mypost ); //SEE ABOVE
 $meta_key = 'your-new-field-name';
 $meta_value = 'your-form-value';
 $unique = true; // or false     

 add_post_meta( $mypost_id, $meta_key, $value, $unique );

出典: wp_insert_post

1
Shane