公開中のパスワード保護された投稿の数を表示したい

WP_Queryクラスを使用して、公開中のパスワード保護された投稿の数を取得し、表示する方法を説明します。

関数を作成する

まず、公開中のパスワード保護された投稿数を取得する関数を作成します。以下のコードを、テーマのfunctions.phpファイルに追加してください。

function wpkb_count_protected_posts() {
  $args = [
    'fields'         => 'ids',
    'has_password'   => true,
    'post_status'    => 'publish',
    'post_type'      => 'post',
    'posts_per_page' => -1,
  ];

  $the_query = new WP_Query($args);
  $count = $the_query->found_posts;

  wp_reset_postdata();

  return $count;
}

コードの説明

  • fields => 'ids'により、投稿のIDのみを取得します。
  • has_password => trueで、パスワード保護された投稿のみを対象にします。
  • post_status => 'publish'により、公開中の投稿をフィルタリングします。
  • posts_per_page => -1で、全ての投稿を取得する設定になっています。

投稿数を表示する

次に、投稿数を表示したいテーマファイル(例えばfront-page.phpやarchive.phpなど)に以下のコードを追加します。

$protected_posts_count = count_protected_posts();
echo '公開中のパスワード保護された投稿数: ' . $protected_posts_count;

これにより画面に「公開中のパスワード保護された投稿数: 9」と表示されます(9の部分には実際の数が入ります)。

以上の方法で、公開中のパスワード保護された投稿の数を表示できます。これにより、訪問者にパスワード保護されている投稿の数を知らせることができます。