Formular pentru Adăugarea Postărilor în Tipul de Postare Personalizat
În principiu, vreau să afișez un formular pe blogul meu (pe o anumită pagină) care să permită oricui să îl completeze și care va crea o postare într-un tip de postare personalizat.
Am văzut răspunsul o dată înainte, dar nu îl mai pot găsi acum.

postarea din partea de front-end implică afișarea unui formular și procesarea acestuia:
formular:
<!-- Formular pentru Postare Nouă -->
<div id="postbox">
<form id="new_post" name="new_post" method="post" action="">
<!-- titlul postării -->
<p><label for="title">Titlu</label><br />
<input type="text" id="title" value="" tabindex="1" size="20" name="title" />
</p>
<!-- categoria postării -->
<p><label for="Category">Categorie:</label><br />
<p><?php wp_dropdown_categories( 'show_option_none=Categorie&tab_index=4&taxonomy=category' ); ?></p>
<!-- conținutul postării -->
<p><label for="description">Conținut</label><br />
<textarea id="description" tabindex="3" name="description" cols="50" rows="6"></textarea>
</p>
<!-- tag-urile postării -->
<p><label for="post_tags">Etichete:</label>
<input type="text" value="" tabindex="5" size="16" name="post_tags" id="post_tags" /></p>
<p align="right"><input type="submit" value="Publică" tabindex="6" id="submit" name="submit" /></p>
<input type="hidden" name="action" value="new_post" />
<?php wp_nonce_field( 'new-post' ); ?>
</form>
</div>
procesarea:
if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) && $_POST['action'] == "new_post") {
// Validare minoră a formularului pentru a verifica prezența conținutului
if (isset ($_POST['title'])) {
$title = $_POST['title'];
} else {
echo 'Te rog introdu un titlu';
}
if (isset ($_POST['description'])) {
$description = $_POST['description'];
} else {
echo 'Te rog introdu conținutul';
}
$tags = $_POST['post_tags'];
// Adaugă conținutul formularului în $post ca un array
$new_post = array(
'post_title' => $title,
'post_content' => $description,
'post_category' => array($_POST['cat']), // Utilizabil și pentru taxonomii personalizate
'tags_input' => array($tags),
'post_status' => 'publish', // Alege: publish, preview, future, draft, etc.
'post_type' => 'post_type_name' //'post',page' sau folosește un tip de postare personalizat dacă dorești
);
//salvează noua postare
$pid = wp_insert_post($new_post);
//introdu taxonomiile
}

@Bainternet - Mulțumesc, acum există o modalitate de a face ca formularul să redirecționeze către noul articol după ce îl trimit?

@Bainternet - Mulțumesc din nou, dar când pun asta după funcția wp_insert_post
, primesc o eroare care spune că nu pot modifica anteturile. Unde ar trebui să o pun?

wp_insert_post nu modifică niciun header și nu afișează nimic, ceea ce mă face să cred că ceva este afișat în codul tău, postează codul exact pe care îl folosești ca să pot arunca o privire mai atentă

@Bainternet - http://pastebin.com/jTzryzAs

Așa ar trebui să structurezi codul: http://pastebin.com/SRi2ZxWa

@Jared silent are dreptate, partea de procesare trebuie să vină înaintea formularului

Hmm... sunt cam curios. Am folosit toate variantele posibile ale unui formular de postare pe care le-am găsit. Inclusiv aceasta. Nu reușesc să fac porțiunea de validare să funcționeze......

@MohannadQamara poți folosi următoarele după $pid = wp_insert_post($new_post);
-- if( $pid ) { add_post_meta( $pid, 'post_meta_name', 'post meta value' ); }

@Bainternet cum rămâne cu aplicarea termenilor la o taxonomie specifică pentru tipul de postare personalizat?

@Anagio ia în considerare Punerea unei întrebări noi și referirea la aceasta.

S-ar putea să fie mai simplu să folosești un plugin pentru asta.
De asemenea, poți utiliza excelentul plugin Contact Form 7 împreună cu extensia Post My CF7 Form, care îți va permite să salvezi orice formular personalizat într-un post personalizat, inclusiv imagini ca atașamente principale, câmpuri meta personalizate și intrări de tip select/checkbox/radio ca taxonomii.
Pluginul Post My CF7 Form are o funcționalitate bogată care poate fi valorificată pentru a personaliza și ajusta în continuare modul în care formularele tale ar trebui să fie salvate. Există și o secțiune de documentație detaliată.
