ログイン時でも非公開記事を投稿一覧に表示させない方法|WordPress

WordPressの投稿で、記事を非公開に設定していても、
ログインしていると非公開記事も表示されてしまいます。

ユーザーさんには見えていないので問題はないのですが、気になるときに。

目次
  1. ループのなかで非公開記事を非表示にする
  2. アーカイブページで非公開記事を非表示にする
    1. 投稿ステータスについて
    2. 参考
    3. WordPressの勉強するならこの一冊

ループのなかで非公開記事を非表示にする

▼ ループを記述するphpファイル

<?php
$args = array(
    'post_type' => 'post',
    'posts_per_page' => 10,
    'post_status' => 'publish', //投稿ステータスを公開済に指定
);
$the_query = new WP_Query( $args );
?>
<?php if ( $the_query->have_posts() ) : ?>
    <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
        // ループの内容
    <?php endwhile; ?>
<?php endif; ?>

5行目のpost_statusをpublishに設定することで、公開済の記事だけをループさせる(=非公開記事を除外する)ことができます。

アーカイブページで非公開記事を非表示にする

▼ functions.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に設定してあげます。

投稿ステータスについて

投稿ステータス | WordPress.org 日本語

投稿ステータスについての解説です。

参考

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

こちらでお勉強させていただきました。

WordPressの勉強するならこの一冊

私自身、この1冊から始めて今でもずっと見返す一冊です。

「この記事が役に立った!」方はこちら