web-dev-qa-db-ja.com

ボタンでフロントエンドから保留中の記事を公開しますか?

私のindex.phpの中で、ワードプレスの後ろの青い公開ボタンをポストの近くのフロントエンドに置くことは可能ですか。ダッシュボードに移動せずに保留中の記事を公開する方法が必要です。管理者だけが[公開]ボタンを表示できますか?

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

ご協力ありがとうございます

2
jimilesku

まず、公開ボタンを印刷する機能を作成します。

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

次に投稿ステータスを変更する関数を作成します。

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

それからボタンの送信をキャッチするようにしてください:

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

上記のコードはすべてテーマのfunctions.phpファイルに入れることができ、各投稿の後に保留中の投稿のループにshow_publish_button();を追加するだけです。

5
Bainternet