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

WordPressの投稿記事の一覧から、「非公開」状態の記事を除外して非表示にする方法の備忘録です。
管理画面へログインしている時は、投稿一覧に「非公開」状態の記事も表示されてしまいます。

「非公開:」が表示されてしまう記事を一覧から除外します。
非公開記事を除外する
投稿一覧から非公開記事を除外したい場合は、ループのクエリに条件を追加します。
<?php
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => 3
);
$the_query = new WP_Query($args);
if($the_query->have_posts()):
?>
<ul>
<?php while ($the_query->have_posts()): $the_query->the_post(); ?>
<li><?php echo get_the_date(); ?><?php echo get_the_title(); ?></li>
<?php endwhile; ?>
</ul>
<?php wp_reset_postdata(); ?>
<?php endif; ?>
配列$argsで設定した条件の投稿記事をwhileのループで表示しています。
配列のpost_statusに「publish」を指定することで、「公開済」ステータスの記事のみを取得しています。
他の条件で記事を除外する
非公開以外のステータスを設定したい場合、以下の値を使用します。
- 公開済 … publish
- 予約済 … future
- 下書き … draft
- 承認待ち … pending
- 非公開 … private
- ゴミ箱 … trash
- 自動保存 … auto-draft
- 継承 … inherit
例えば、「承認待ち」の投稿記事のみを一覧表示したい場合は、post_statusに「pending」を指定します。


