J'ai un type de message personnalisé et quelques méta-champs. J'ai un champ de sélection 'Publier' pour changer le statut de l'article. si je le définit "oui" et que je clique sur le bouton Mettre à jour, la publication sera publiée et si je la règle sur "non", la publication doit être enregistrée comme "brouillon". vous pouvez voir une capture d'écran de mon type de message personnalisé-
Quel code devrais-je utiliser dans add_action( 'save_post','save_my_data')
. ou toute autre idée.
Si je comprends bien, vous souhaitez utiliser votre propre formulaire de sélection pour mettre à jour le statut publié d'une publication au lieu des boutons Publier/Annuler la publication? Quelque chose comme ça marcherait pour ça:
function save_my_data($post_id){
if($_POST['publish'] == 'yes' && get_post_status($post_id) != 'publish'){ //whatever your post variable is
remove_action('save_post', 'save_my_data'); //if you don't unhook the function you'll have an infinite loop
wp_publish_post($post_id);
add_action('save_post', 'save_my_data'); //rehook the function
}
if($_POST['publish']) == 'no' && get_post_status($post_id) == 'publish'){
remove_action('save_post', 'save_my_data'); //if you don't unhook the function you'll have an infinite loop
wp_update_post(array(
'ID' => $post_id,
'post_status' => 'draft'
));
add_action('save_post', 'save_my_data'); //rehook the function
}
}
Vous voudrez probablement ajouter un peu de gestion des erreurs et l'optimiser un peu. Vous pouvez également souhaiter prendre en compte les autres statuts de poste décrits ici: http://codex.wordpress.org/Post_Status#Default_Statuses