ウェベン!

【WP】非公開記事を投稿一覧で表示させない方法

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 記事一覧から非公開記事を除外する方法

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