web-dev-qa-db-fra.com

Comment mettre à jour le statut d'une publication à l'aide de métadonnées dans Custom post TYpe

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é-

enter image description here

Quel code devrais-je utiliser dans add_action( 'save_post','save_my_data'). ou toute autre idée.

1
shashank

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

2
TheGentleman