タグ: Snow Monkey

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

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

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