Publier par programme une publication (type de publication personnalisé) avec des champs personnalisés


17

J'ai un type de message personnalisé «Participant» avec de nombreux champs personnalisés. J'ai également un formulaire avec des champs de saisie correspondants que l'utilisateur doit remplir. Lorsqu'il soumet le formulaire, je souhaite qu'un nouveau message soit généré avec chaque champ personnalisé contenant la valeur choisie par l'utilisateur.

Est-il possible de le faire et si oui, comment?

Réponses:


29

Utilisez wp_insert_post () et add_post_meta () , comme ceci:

// insert the post and set the category
$post_id = wp_insert_post(array (
    'post_type' => 'your_post_type',
    'post_title' => $your_title,
    'post_content' => $your_content,
    'post_status' => 'publish',
    'comment_status' => 'closed',   // if you prefer
    'ping_status' => 'closed',      // if you prefer
));

if ($post_id) {
    // insert post meta
    add_post_meta($post_id, '_your_custom_1', $custom1);
    add_post_meta($post_id, '_your_custom_2', $custom2);
    add_post_meta($post_id, '_your_custom_3', $custom3);
}

Fonctionne comme un charme même sur WordPress 4.4.2 :)!
jave.web

de nos jours, vous pouvez simplement ajouter des méta-fichiers via la clé meta_input dans wp_insert_post:'meta_input' => ['_your_custom_1' => $custom1, '_your_custom_2' => custom2]
Andreas

Bon point @Andreas, je vous suggère d'ajouter cela comme une nouvelle réponse et de le laisser commencer à obtenir des votes. Ce devrait être la réponse maintenant.
webaware

Thx @webaware :)
Andreas

Fonctionne comme un charme même sur WordPress 5.1 :)!
Je suis la personne la plus stupide du

6

En plus de l' excellente réponse de @webaware ci-dessus, cela peut être géré depuis wordpress 4.4.0 tout via l' appel wp_insert_post :

$post_id = wp_insert_post(array (
    'post_content' => $content,
    'post_title' => $title,
    'post_type' => 'your_custom_post_type',
    'post_status' => 'publish',

    // some simple key / value array
    'meta_input' => array(
        'your_custom_key1' => 'your_custom_value1',
        'your_custom_key2' => 'your_custom_value2'
        // and so on ;)
    )
));

if ($post_id) {
    // it worked :)
}

4

Cela peut être réalisé assez facilement en utilisant le plugin Gravity Forms . Vous pouvez créer un formulaire qui remplit un type de publication personnalisé dans le backend. Ce message peut être configuré pour apparaître en tant que brouillon ou publié. Aucun problème pour ajouter des champs personnalisés. Dans mon cas, je l'ai utilisé pour recueillir des témoignages de clients.


J'aime cette solution, surtout si vous la livrez à un client qui souhaite gérer lui-même le formulaire.
Webaware
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.