はじめに
以下のページでは、カテゴリーページごとにメニューを変更する方法を紹介しました。
以下のウィジェットについても、同様にカテゴリーページごとにメニュー設定を変更します。
- おすすめカード
- ナビカード
- ボックスメニュー
- ランキング
この記事では、この方法について説明します。
実装手順
以下の手順で実装します。
- ラベルPHPを追加(共通処理)
以下のコードをfunctions.phpに追加します。
/** * カテゴリーページに対応するメニューを返却 * * @param array $cat_array カテゴリIDをキー、返したい値を値とした連想配列 * @return mixed|null 対応する値、存在しない場合は null */ if (!function_exists('get_category_value')): function get_category_value(array $cat_array) { if (!is_category()) { return null; } $cat_id = get_queried_object_id(); return $cat_array[$cat_id] ?? null; } endif; - ラベルPHPを追加(おすすめカード)
以下のコードをfunctions.phpに追加します。
add_filter('recommended_cards_widget_name', function ($name) { // カテゴリーIDと対応するメニュー名の配列 $cat_array = [ 123 => 'menu123', 456 => 'menu456' ]; return get_category_value($cat_array) ?? $name; }); - ラベルPHPを追加(ナビカード)
以下のコードをfunctions.phpに追加します。
add_filter('navi_entries_widget_name', function ($name) { // カテゴリーIDと対応するメニュー名の配列 $cat_array = [ 123 => 'menu123', 456 => 'menu456' ]; return get_category_value($cat_array) ?? $name; }); - ラベルPHPを追加(ボックスメニュー)
以下のコードをfunctions.phpに追加します。
add_filter('box_menu_widget_name', function ($name) { // カテゴリーIDと対応するメニュー名の配列 $cat_array = [ 123 => 'menu123', 456 => 'menu456' ]; return get_category_value($cat_array) ?? $name; }); - ラベルPHPを追加(ランキング)
以下のコードをfunctions.phpに追加します。
add_filter('ranking_widget_id', function ($ranking_id) { // カテゴリーIDと対応するランキングID $cat_array = [ 123 => 111, 456 => 222 ]; return get_category_value($cat_array) ?? $ranking_id; });
さいごに
今回紹介した方法を使えば、カテゴリーページごとにウィジェットメニューを柔軟に切り替えることができます。
これにより、サイトごとのデザインやコンテンツ表示をカテゴリ単位で最適化でき、運営効率も向上します。



