WordPressでログイン中のユーザーのみメインループの記事一覧に下書きや公開予定も表示できるようにする
WordPressのループ表示はデフォルトはpost_statusがpublishとなっており、公開した記事だけがループの所に表示されるようになっています。これはユーザーがログイン中かの有無に関わらず同じ表示です。
個別の記事はプレビューというログインユーザー専用のURLがあり、そちらの方でどのように表示されるかを確認することが出来るのですが、一覧ページ等では表示の確認をすることデフォルトのままでは出来ません。
限られたケースですが、ログインのユーザーには下書きや公開予定の記事を表示させたい時がありますので、ログイン中のユーザーには下書き、公開予定の記事もメインループの記事一覧に表示させる方法。
WordPressでログイン中のユーザーか判定して、メインループを変更する
まずは、ログイン中のユーザーかどうかを判断します。ログイン中かどうかを判断する専用の条件分岐タグ is_user_logged_in() があるのでそれを使います。
次にメインループに変更を加えるために query_posts を使ってメインループの条件を変更します。
まとめたものがこのようになります
<?php if ( is_user_logged_in() ): $paged = get_query_var('paged'); query_posts( array( 'paged' => $paged, 'post_status'=>array( 'publish', 'future', 'draft' ) )); endif; ?>
ページネーションがあるときには、paged を取得して指定しておかないとページネーションが上手く行きません、あとは post_status の値を array でpublish以外のfutureとdraftを指定することで。公開予定記事と、下書き記事もメインループの表示の条件に加えます。
あとは、メインループの終了のところに query_posts をリセットするタグを入れます
<?php wp_reset_query(); ?>
query_posts を使うときは<?php wp_reset_query(); ?>はセットで使います。リセットしておかないと、どこかのループに干渉してしまって思わぬ動きになります。
こちらのコードを使う機会がありましたので、忘備録的に書きました。
COMMENT