WordPress でサイト構築しているみんなが大好きな高機能テーマ、Snow Monkey。
最近自作テーマから Snow Monkey ベースのテーマに切り替えた案件で、パンくずリストからカテゴリー名を削除する必要がありました。はて、そんなことが可能なのかと考えていたのですが、暫定的な解を思いついたので、実装してみました。
子テーマの場合は functions.php、My Snow Monkey プラグインの場合は my-snow-monkey.php に書き加えます。
CSS で消すだけでも事足りるのですが、残念ながら、パンくずリストにカテゴリーであることを表すクラスなどは付いていなかったので、フィルターフックでパンくずリストの出力自体に変更を加えています。
まず、パンくずリストのフック ‘snow_monkey_breadcrumbs‘ の値を受け取る( $items )のですが、この中身は二次元配列になっていて、パンくずの階層の数だけ要素が含まれます。下記のようなイメージです。
array(3) {
[0]=> array(2) {
["title"]=> string "ホーム"
["link"]=> string "https://example.com/"
}
[1]=> array(2) {
["title"]=> string "投稿一覧"
["link"]=> string "https://example.com/posts/"
}
[2]=> array(2) {
["title"]=> string "カテゴリー名"
["link"]=> string "https://example.com/category/category-name/"
}
[3]=> array(2) {
["title"]=> string "投稿名"
["link"]=> string "https://example.com/post-name/"
}
}
トップページを固定ページにしないで、最新の投稿にしている場合は 2 番目の要素( $items[1] )は出ないなど、サイトや投稿タイプごとに細かな違いはあると思います。
今回はカテゴリー名を除去したいので、3 番目の要素( $items[2] )が存在して、かつ中の link 要素に /category/ という文字列が存在する場合、という条件にしてみました。あまりスマートな指定でないことは自覚しているので、もしもっとよい if 文がありましたらお知らせください。
そして、条件に該当する場合、array_splice 関数で 3 番目の要素ごと消しています。これでパンくずからカテゴリー名は消えます。
こんなニッチな事例が誰かのお役に立つのかは疑問ですが、一応書き残しておきます。ではでは。