Pubblicare a livello di codice un post (tipo di post personalizzato) con campi personalizzati


17

Ho un tipo di post personalizzato "Partecipante" con molti campi personalizzati. Ho anche un modulo con i campi di input corrispondenti che l'utente deve compilare. Quando invia il modulo, desidero generare un nuovo post con ogni campo personalizzato contenente il valore scelto dall'utente.

È possibile fare e, in tal caso, come?

Risposte:


29

Usa wp_insert_post () e add_post_meta () , in questo modo:

// 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);
}

Funziona come un fascino anche su WordPress 4.4.2 :)!
jave.web,

al giorno d'oggi, puoi semplicemente aggiungere meta filed tramite la chiave meta_input in wp_insert_post:'meta_input' => ['_your_custom_1' => $custom1, '_your_custom_2' => custom2]
Andreas

Buon punto @Andreas, ti suggerisco di aggiungerlo come nuova risposta e lasciare che inizi a ottenere voti. Dovrebbe essere la risposta ora.
webaware,

Thx @webaware :)
Andreas,

Funziona come un fascino anche su WordPress 5.1 :)!
Sono la persona più stupida il

6

Oltre alla grande risposta di @webaware sopra, questo può essere gestito da wordpress 4.4.0 tutto tramite la chiamata 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

Questo può essere ottenuto abbastanza facilmente usando il plugin Gravity Forms . Puoi creare un modulo che compili un tipo di post personalizzato nel back-end. Questo post può essere impostato per apparire come bozza o come pubblicato. Nessun problema con l'aggiunta di campi personalizzati. Nel mio caso, l'ho usato per raccogliere le testimonianze dei clienti.


Mi piace questa soluzione, soprattutto se la stai consegnando a un cliente che vuole gestire il modulo da solo.
webaware il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.