web-dev-qa-db-fra.com

Publier un article en attente depuis le site avec un bouton

Est-il possible de prendre le bouton de publication bleu à l’arrière de la wordpress et de le placer dans le frontal près de la publication dans mon index.php. J'ai besoin d'un moyen de publier l'article en attente sans passer au tableau de bord et seul l'administrateur peut voir le bouton Publier?

<?php   
$args=array(
'post_type'         => 'post',
'post_status'       => 'pending',
'order'                 => 'ASC',
'caller_get_posts'  =>1,
'paged'         =>$paged,
            );

Merci d'avance à tous pour l'aide: D

2
jimilesku

Commencez par créer une fonction qui imprimera le bouton Publier:

//function to print publish button
function show_publish_button(){
    Global $post;
    //only print fi admin
    if (current_user_can('manage_options')){
        echo '<form name="front_end_publish" method="POST" action="">
                <input type="hidden" name="pid" id="pid" value="'.$post->ID.'">
                <input type="hidden" name="FE_PUBLISH" id="FE_PUBLISH" value="FE_PUBLISH">
                <input type="submit" name="submit" id="submit" value="Publish">
            </form>';
    }
}

Créez ensuite une fonction pour changer le statut de la publication:

//function to update post status
function change_post_status($post_id,$status){
    $current_post = get_post( $post_id, 'ARRAY_A' );
    $current_post['post_status'] = $status;
    wp_update_post($current_post);
}

Ensuite, assurez-vous d’attraper la soumission du bouton:

if (isset($_POST['FE_PUBLISH']) && $_POST['FE_PUBLISH'] == 'FE_PUBLISH'){
    if (isset($_POST['pid']) && !empty($_POST['pid'])){
        change_post_status((int)$_POST['pid'],'publish');
    }
}

Maintenant, tout le code ci-dessus peut être inséré dans le fichier functions.php de votre thème et il ne vous reste plus qu'à ajouter show_publish_button(); dans votre boucle de messages en attente après chaque message.

5
Bainternet