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');
}
}
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;
}