WordPress

WordPress 記事一覧から非公開記事を除外する方法

WordPress で記事一覧から非公開記事を除外する方法を紹介します。
例えば、クライアントから「非公開記事が表示されて紛らわしい!」と、言われた時に便利な方法です。

非公開記事を除外する方法

投稿に非公開記事があると、ログイン中の記事一覧には非公開記事が表示されてしまいます。
非公開記事を非表示にするには、クエリをカスタマイズして公開済みの記事のみを表示するようにします。
例えば、アーカイブページ一覧から非公開記事を除外するには、function.php に次のコードを追加します。

/*【出力カスタマイズ】クエリーカスタマイズ、ループから非公開記事を除外 */
function custom_posts() {
global $wp_query;
if($wp_query->is_admin) return; // 管理画面内は除く
if(is_post_type_archive()){ // アーカイブページ
$wp_query->query_vars['post_status'] = 'publish'; // 投稿ステータス「公開済」
}
}
add_filter('pre_get_posts', 'custom_posts');

アーカイブページで実行されるように条件分岐を追加。
次に、公開済記事のみを表示するために post_status に値 publish(公開済)を指定します。
カスタム投稿タイプのアーカイブのみ指定したい場合などは、is_post_type_archive(‘example’) などと指定してください。

まとめ

WordPress で記事一覧から非公開記事を除外する方法を紹介しました。