web-dev-qa-db-fra.com

J'essaie de créer un formulaire frontal simple pour poster

j'essaie d'apprendre et de créer des choses plus profondes avec Wordpress. Mon but est de créer un code/script/plugin qui me permettra de poster à partir du frontend.

J'ai vu de nombreux plugins, comme le thème des annonces classées templatiques, qui soumettent, gèrent et modifient des publications depuis le front-end, mais qui sont très complexes avec un code inutile pour moi.

Je voudrais avoir une vue plus claire sur la façon d'obtenir l'ID, comment définir un titre, le contenu et les champs personnalisés bien sûr.

Une fois que je traverse cela, je veux l’étudier selon user_meta.

Merci pour vos exemples, codes, idées, liens!

2
EnexoOnoma

Pour poster depuis le front-end, vous pouvez utiliser wp_insert_post () function.

C'est donc simplement une question de formulaire et de traitement

la forme:

 <!-- New Post Form -->
<div id="postbox">
<form id="new_post" name="new_post" method="post" action="">
<p><label for="title">Title</label><br />
<input type="text" id="title" value="" tabindex="1" size="20" name="title" />
</p>
<p><label for="description">Description</label><br />
<textarea id="description" tabindex="3" name="description" cols="50" rows="6"></textarea>
</p>
<p><?php wp_dropdown_categories( 'show_option_none=Category&tab_index=4&taxonomy=category' ); ?></p>
<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>
<!--// New Post Form -->

le traitement:

if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) &&  $_POST['action'] == "new_game_post") {

    // Do some minor form validation to make sure there is content
    if (isset ($_POST['title'])) {
        $title =  $_POST['title'];
    } else {
        echo 'Please enter a game  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,
        'tags_input'    => array($tags),
        'post_status'   => 'publish',           // Choose: publish, preview, future, draft, etc.
        'post_type' => $_POST['post_type']  // Use a custom post type if you want to
    );
    //save the new post and return its ID
    $pid = wp_insert_post($new_post); 


}

Bonus Une fois que vous avez l'identifiant de la publication ($ pid dans l'exemple ci-dessus), vous pouvez facilement définir les termes et les champs personnalisés:

 //insert taxonomies like categories tags or custom 
    wp_set_post_terms($pid,(array)($_POST['cat']),'category',true);

//insert custom fields
update_post_meta($pid,'meta_key_name',$_POST['meta_value']);

j'espère que cela t'aides.

5
Bainternet