投稿タイプごとの記事数を取得する~WordPress覚書き~

WordPressで、通常の投稿、カスタム投稿タイプ、固定ページそれぞれの記事数を取得する際に結構手こずったので覚書き。

使うのは get_post_types と wp_count_posts です。表示は「ポストタイプ名(記事数)」を目指しました。 get_post_types でポストタイプ名(投稿の種類)を取得して、それを wp_count_posts でポストタイプ名毎の記事数を取得するという流れです。

最初に書いたコード

<?php
$post_types= get_post_types(array('public' => true));
foreach ( $post_types as $post_type ) {
$published_posts = wp_count_posts( $post_type ,'publish');
echo esc_html( $post_type . ' (' . $published_posts . ')' );
} ?>

が、全く表示されない!!なんでだーと思ってたら wp_count_posts はオブジェクトを返すという記述を発見。日本語のCodexにはそんなこと載ってなかったぞ…。

参考サイト:
WordPress で作成されたカスタム投稿タイプなどを全て取得する方法
smallstudio/memo / WordPress の総投稿数
本家Codex(英語)

ということで、上記5行目の $published_posts を $published_posts->publish に書き直したらうまくいきました!