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;
}
コードの説明
- add_filter関数で、
bcn_after_fill
フックを使い、パンくずリストの生成後にフィルタリング処理を追加します。 - exclude_specific_protected_id_from_breadcrumb関数内では、パンくずリストに含まれる各要素をチェックし、特定のIDを持つ要素を除外します。
- ReflectionClassを使用して、
id
という保護されたプロパティにアクセスし、値を取得します。 - 取得したIDが
2
または1310
の場合、その要素をパンくずリストから削除します。 - 最後に、インデックスを再配置して配列を整理します。
注意点
- このコードは、IDが固定のカテゴリーに対して動作します。他のIDを除外する場合は、
if ($id == 2 || $id == 1310)
の条件を変更してください。 - テーマやプラグインのアップデートによって動作が変わる場合があるので、事前にバックアップを取ることを推奨します。