Breadcrumb NavXTで特定のカテゴリーをパンくずリストから除外する方法

Breadcrumb NavXTは、WordPressのパンくずリストを簡単に管理できる便利なプラグインです。しかし、特定のカテゴリーをパンくずリストから除外したい場合もあるでしょう。この記事では、特定のカテゴリー(IDを指定)をパンくずリストから除外する方法について解説します。

方法

以下のコードをテーマのfunctions.phpファイルに追加することで、指定したカテゴリーIDをパンくずリストから除外できます。

add_filter('bcn_after_fill', 'exclude_specific_protected_id_from_breadcrumb');

function exclude_specific_protected_id_from_breadcrumb($breadcrumb_trail) {
    if (isset($breadcrumb_trail->breadcrumbs) && is_array($breadcrumb_trail->breadcrumbs)) {
        foreach ($breadcrumb_trail->breadcrumbs as $key => $breadcrumb) {
            // ReflectionClassを使ってprotectedプロパティ「id」にアクセス
            $reflection = new ReflectionClass($breadcrumb);
            if ($reflection->hasProperty('id')) {
                $property = $reflection->getProperty('id');
                $property->setAccessible(true);
                $id = $property->getValue($breadcrumb);

                // IDが2または1310の場合に除外
                if ($id == 2 || $id == 1310) {
                    unset($breadcrumb_trail->breadcrumbs[$key]);
                }
            }
        }
        // インデックスを再配置
        $breadcrumb_trail->breadcrumbs = array_values($breadcrumb_trail->breadcrumbs);
    }
    return $breadcrumb_trail;
}

コードの説明

  1. add_filter関数で、bcn_after_fillフックを使い、パンくずリストの生成後にフィルタリング処理を追加します。
  2. exclude_specific_protected_id_from_breadcrumb関数内では、パンくずリストに含まれる各要素をチェックし、特定のIDを持つ要素を除外します。
  3. ReflectionClassを使用して、idという保護されたプロパティにアクセスし、値を取得します。
  4. 取得したIDが2または1310の場合、その要素をパンくずリストから削除します。
  5. 最後に、インデックスを再配置して配列を整理します。

注意点

  • このコードは、IDが固定のカテゴリーに対して動作します。他のIDを除外する場合は、if ($id == 2 || $id == 1310)の条件を変更してください。
  • テーマやプラグインのアップデートによって動作が変わる場合があるので、事前にバックアップを取ることを推奨します。

この記事を書いた人

田島 佑清

2児の父 / ネクストメディア株式会社のエンジニア