web-dev-qa-db-ja.com

プレビューモードでホームページを見る

あなたのホームページをプレビューモードで表示する方法はありますか。そうすれば、それらを公開する前に私の投稿がホームページ上でどのように見えるかを確認することができます(つまり、おすすめの画像が正しく見えることなど)。

7
Matt Whetton

自分の投稿をprivateに設定して個人的にホームページに表示することができると思います。

表示を非公開に変更すると、表示されているように投稿またはページのステータスが[非公開]に変わります。非公開投稿は自動的に公開されますが、適切な権限レベルを持つユーザー(編集者または管理者)以外には表示されません。

ここ を参照してください。


これがサイト上のdraft投稿を表示するための1つのアイデアです。

previewパラメータを再利用して、現在のページビューにdraftの投稿を追加しましょう。次に例を示します。

- example.com/?preview=true
- example.com/2014/01/?preview=true

次に、ログインしているユーザーのすべてのフロントエンドクエリを次のように変更します。

add_filter( 'posts_where', function( $where ){
   if( ! is_admin() 
       && is_user_logged_in() 
       && 'true' === get_query_var( 'preview' ) 
       && ! is_singular() )
   {
        global $wpdb;
        $from = sprintf( "%s.post_status = 'publish'", $wpdb->posts ) ;
        if( current_user_can( 'edit_others_posts' ) )
        {
            // add drafts from all users:
            $to = sprintf( "%s.post_status IN ( 'publish', 'draft' ) ", $wpdb->posts ) ;
        }
        else
        {
            // add drafts from current user:
            $sql = " ( %s.post_status = 'publish' 
                       OR ( %s.post_status = 'draft'  AND %s.post_author = %d ) ) ";
            $to = sprintf( $sql, 
                           $wpdb->posts, 
                           $wpdb->posts, 
                           $wpdb->posts, 
                           get_current_user_id() 
                  );
        }
        $where  = str_ireplace( $from, $to, $where );       
   }
   return $where;
});

しかし、is_main_query()を使って変更をメインクエリに制限することができます。

ps:これはいくつかのテストや調整が必要かもしれません...しかしあなたはアイデアを得ます;-)

6
birgire