【WordPress】メニュー内のカテゴリごとの記事数を表示させたい【Cocoon】

この記事は約9分で読めます。
ぺろちゃん
ぺろちゃん

ブログのメニューでカテゴリーごとの記事の数を表示させたいつぼ。

どうすればいいつぼ?

まるも
まるも

ふむふむ。

確かに記事数の表示があると

メインテーマが分かりやすくなったり、全体感も把握しやすいですね。

それでは今回はカテゴリごとの記事数を表示させる方法について見ていきましょう。

今回はCocoonでカテゴリごとの記事数を表示させる方法について見ていきましょう。

Cocoonフォーラムの中に同様の質問をされている方がいらっしゃいましたので、参考にさせていただいています。

グローバルメニューにカテゴリーごとの投稿数を表示させたい(親カテゴリーの投稿数を0でなく子カテゴリーの投稿数の合計で表示...
初めて質問させていただきます。 不具合・カスタマイズ対象ページのURL: 相談内容: サイドバーだけでなく、グローバルメニューにもカテゴリーごとの投稿数を表示させたいのですが、調べて見つけた方法だと、親カテゴリーの投稿数が0と表示されてしまいます。 投稿...
まるも
まるも

ふむふむ。

どうやら下記phpコードをfunctions.phpに追記すれば良いようです。

早速やってみます。

//function my_the_title_menu_category( $title, $post_ID ) {
if ( 'nav_menu_item' == get_post_type( $post_ID ) ) {
if ( 'taxonomy' == get_post_meta( $post_ID, '_menu_item_type', true ) && 'category' == get_post_meta( $post_ID, '_menu_item_object', true ) ) {
$category = get_category( get_post_meta( $post_ID, '_menu_item_object_id', true ) );
if ( $category->count >= 0) {
$title .= sprintf( ' (%d)', $category->count );
}
}
}
return $title;
}
add_filter( 'the_title', 'my_the_title_menu_category', 10, 2 );

【手順】

WP管理画面テーマファイルエディターfunctions.php

「//以下に子テーマ用の関数を書く」の下、8行目以降ににコピペしていきます。

まるも
まるも

最後にファイルを更新をクリック。

さて上手くいくでしょうか。

まるも
まるも

はりゃ!

18行目でエラーが出てしまいました。

こんな時にはChatGPTの出番です。

まるも
まるも

ChatGPTさん宜しくお願いいたします。

力を貸してください!

ChatGPT
ChatGPT

このPHPコードの目的は、ナビゲーションメニュー内のカテゴリー項目のタイトルに、そのカテゴリー内の投稿数を追加することのようですね。コードにはいくつかの改善点があります。

まるも
まるも

さすがChatGPTさん!

修正版コードを教えてください。

修正点

  1. get_category()が失敗する場合の処理: get_category()が返すオブジェクトは、無効なIDの場合にはWP_Errorが返されることがあるので、それを確認する処理を加えると良いでしょう。
  2. $category->count >= 0 の修正: カテゴリーの投稿数がゼロでもカウントを追加したい場合、>= 0は問題ありませんが、$category->countnullや負の値にならないように明示的なチェックを入れるのも良いかもしれません。

修正版コード

function my_the_title_menu_category( $title, $post_ID ) {
    if ( 'nav_menu_item' == get_post_type( $post_ID ) ) {
        if ( 'taxonomy' == get_post_meta( $post_ID, '_menu_item_type', true ) && 'category' == get_post_meta( $post_ID, '_menu_item_object', true ) ) {
            $category_id = get_post_meta( $post_ID, '_menu_item_object_id', true );
            $category = get_category( $category_id );
            
            // カテゴリーが有効であれば
            if ( ! is_wp_error( $category ) && $category ) {
                $count = $category->count;
                // 投稿数が0以上ならカウントをタイトルに追加
                if ( $count >= 0 ) {
                    $title .= sprintf( ' (%d)', $count );
                }
            }
        }
    }
    return $title;
}

add_filter( 'the_title', 'my_the_title_menu_category', 10, 2 );
まるも
まるも

ChatGPTさんが教えてくれた修正版コードを入力していきましょう。

まるも
まるも

おお!!

見事、成功です!

変更点の説明:

  1. is_wp_error( $category ) のチェック: get_category()が失敗した場合、WP_Errorオブジェクトが返るので、それを避けるためにis_wp_error()で確認しています。
  2. カテゴリーが有効であれば: $categoryが存在するかどうかを確認してから処理を進めるようにしています。

これで、カテゴリーIDが無効な場合にエラーが出ないようになり、コードが安定します。

ChatGPT
ChatGPT

これくらい朝飯前です。

まるも
まるも

おみそれしました!

早速、記事数が表示されているか確認してみましょう!

ぺろちゃん
ぺろちゃん

バッチリつぼ!

カテゴリーごとの記事の数が表示されたつぼ。

お見事つぼ!


今回はWordPressでCocoonを使用しているときのカテゴリごとの記事数を表示させる方法について見てきました。

ここまでご覧いただきましてありがとうございました。

コメント

タイトルとURLをコピーしました