web-dev-qa-db-fra.com

utiliser $ wpdb pour insérer un formulaire dans un article

Je veux prendre la forme suivante et utiliser $ wpdb pour l'insérer dans un message. J'ai essayé de lire les lignes INSERT de la page de référence de la classe, mais je ne sais pas vraiment ce qui devrait être référencé. Je ne sais pas comment indiquer au formulaire d'insérer les données dans un message à l'aide de $ 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

Dans la partie succès de votre code, vous pouvez construire un tableau représentant une publication et utiliser wp_insert_post en tant que tel:

Exemple

 $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

Tout champ que vous ne spécifiez pas sera automatiquement renseigné par WordPress.

MODIFIER

Pour les champs personnalisés, voir 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 );

Source: wp_insert_post

1
Shane