web-dev-qa-db-fra.com

Changer le statut de la publication en un clic

Je veux ajouter un bouton personnalisé "Envoyer pour correction" quelque part près du bouton "Publier". Ce bouton personnalisé doit changer le statut de publication de "En attente" à mon propre statut nommé "Sur correction".

Pour l'instant, il est possible de changer le statut en 5 clics (Modifier le statut -> Menu déroulant, cliquer sur -> Sélectionner la correction -> Ok -> Enregistrer sous à la correction).

METTRE À JOUR:

add_action('post_submitbox_misc_actions', 'send_for_correction_button');
function send_for_correction_button()
{
    //global $post;
    echo '<div id="send-for-correction" class="misc-pub-section"
    style="border-top-style:solid; border-top-width:1px; border-top-color:#EEEEEE; border-bottom-width:0px;">
    <input id="save-post2" class="button button-highlighted"
    type="submit" value="Send for correction" name="save">
        </div>';
}
add_action('save_post', 'save_status');
function save_status($post_id)
{
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
        return $post_id;

    if ($_POST['save'] == 'Send for correction')
    {
        update_post_meta($post_id, "post_status", 'on-correction');
    }
}
6
Bubka Gob

Vous pouvez créer votre bouton personnalisé dans une fonction et le raccorder à post_submitbox_misc_actions. Cela l'ajoutera juste au-dessus du bouton de publication.

Pour changer le statut, utilisez wp_update_post dans une fonction Ajax. Essayez-le et renvoyez-le avec votre code si vous rencontrez des problèmes.

UPDATE:

add_action('post_submitbox_misc_actions', 'send_for_correction_button');
function send_for_correction_button()
{
    //global $post;
    echo '<div id="send-for-correction" class="misc-pub-section"
    style="border-top-style:solid; border-top-width:1px; border-top-color:#EEEEEE; border-bottom-width:0px;">
    <input id="save-post2" class="button button-highlighted"
    type="submit" value="Send for correction" name="save">
        </div>';
}
add_filter( 'wp_insert_post_data' , 'my_filter_handler' , '99', 2 );
function my_filter_handler( $data , $postarr )
{
    if ($postarr['save'] == 'Send for correction')
        $data['post_status'] = 'on-correction';

    return $data;
}
5
Chris_O