Snow Monkey のパンくずリストからカテゴリー名を取り除く

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 番目の要素ごと消しています。これでパンくずからカテゴリー名は消えます。

こんなニッチな事例が誰かのお役に立つのかは疑問ですが、一応書き残しておきます。ではでは。

この記事を書いた人

いがらしたけし