En gros, je souhaite afficher sur mon blog un formulaire (sur une certaine page) qui permette à quiconque de le remplir et qui créera un message dans un type de message personnalisé.
J'ai déjà vu la réponse, mais je ne la trouve pas maintenant.
poster depuis le front-end consiste à afficher un formulaire et à le traiter:
forme:
<!-- New Post Form -->
<div id="postbox">
<form id="new_post" name="new_post" method="post" action="">
<!-- post name -->
<p><label for="title">Title</label><br />
<input type="text" id="title" value="" tabindex="1" size="20" name="title" />
</p>
<!-- post Category -->
<p><label for="Category">Category:</label><br />
<p><?php wp_dropdown_categories( 'show_option_none=Category&tab_index=4&taxonomy=category' ); ?></p>
<!-- post Content -->
<p><label for="description">Content</label><br />
<textarea id="description" tabindex="3" name="description" cols="50" rows="6"></textarea>
</p>
<!-- post tags -->
<p><label for="post_tags">Tags:</label>
<input type="text" value="" tabindex="5" size="16" name="post_tags" id="post_tags" /></p>
<p align="right"><input type="submit" value="Publish" tabindex="6" id="submit" name="submit" /></p>
<input type="hidden" name="action" value="new_post" />
<?php wp_nonce_field( 'new-post' ); ?>
</form>
</div>
le traitement:
if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) && $_POST['action'] == "new_post") {
// Do some minor form validation to make sure there is content
if (isset ($_POST['title'])) {
$title = $_POST['title'];
} else {
echo 'Please enter a title';
}
if (isset ($_POST['description'])) {
$description = $_POST['description'];
} else {
echo 'Please enter the content';
}
$tags = $_POST['post_tags'];
// Add the content of the form to $post as an array
$new_post = array(
'post_title' => $title,
'post_content' => $description,
'post_category' => array($_POST['cat']), // Usable for custom taxonomies too
'tags_input' => array($tags),
'post_status' => 'publish', // Choose: publish, preview, future, draft, etc.
'post_type' => 'post_type_name' //'post',page' or use a custom post type if you want to
);
//save the new post
$pid = wp_insert_post($new_post);
//insert taxonomies
}
Il serait peut-être plus simple d’utiliser un plugin pour le faire.
Vous pouvez également utiliser l'excellent Contact Form 7 plugin avec l'extension Post My CF7 Form extension qui vous permettra de sauvegarder tous les formulaires personnalisés dans une publication personnalisée, y compris les images en tant que pièces jointes , champs méta personnalisés et sélectionnez/case à cocher/entrées radio comme taxonomies.
Le plug-in Post My CF7 Form dispose d'une riche fonctionnalité qui peut être exploitée pour personnaliser et affiner la manière dont vos formulaires doivent être sauvegardés. Il y a une section documentation détaillée aussi.