Publicarea programatică a unei postări (tip personalizat de postare) cu câmpuri personalizate
Am un tip personalizat de postare 'Participant' cu multe câmpuri personalizate. De asemenea, am un formular cu câmpuri de introducere corespunzătoare pentru ca utilizatorul să le completeze. Când acesta trimite formularul, vreau să se genereze o nouă postare cu fiecare câmp personalizat conținând valoarea aleasă de utilizator.
Este posibil acest lucru și dacă da, cum?

Folosește wp_insert_post() și add_post_meta(), astfel:
// inserează postarea și setează categoria
$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', // dacă preferi
'ping_status' => 'closed', // dacă preferi
));
if ($post_id) {
// inserează metadatele postării
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);
}

în zilele noastre, poți adăuga simplu câmpuri meta prin cheia meta_input în wp_insert_post: 'meta_input' => ['_your_custom_1' => $custom1, '_your_custom_2' => custom2]

Bun punct @Andreas, sugerez să adaugi asta ca un răspuns nou și să înceapă să primească voturi. Ar trebui să fie răspunsul corect acum.

Pe lângă răspunsul excelent al lui @webaware de mai sus, acest lucru poate fi gestionat începând cu WordPress 4.4.0 în întregime prin apelul wp_insert_post:
$post_id = wp_insert_post(array (
'post_content' => $content,
'post_title' => $title,
'post_type' => 'your_custom_post_type',
'post_status' => 'publish',
// un simplu array cheie / valoare
'meta_input' => array(
'your_custom_key1' => 'your_custom_value1',
'your_custom_key2' => 'your_custom_value2'
// și așa mai departe ;)
)
));
if ($post_id) {
// a funcționat :)
}

Acest lucru poate fi realizat destul de ușor folosind plugin-ul Gravity Forms. Puteți crea un formular care completează un Tip Personalizat de Postare (Custom Post Type) în backend. Acest post poate fi setat să apară ca draft sau ca publicat. Nu există probleme în adăugarea de câmpuri personalizate. În cazul meu, l-am folosit pentru a colecta recomandări de la clienți.
