JOURNAL クリエイティブとマーケティングの話

【WordPress】検索結果ページのパンくずリストに投稿ページ(記事一覧)の階層を追加する方法

WordPressの検索結果ページにパンくずリストを設置すると、「トップページ > 検索結果ページ」という階層構造になります。

でもWordPressでコーポレートサイトなどを構築している場合は、「トップページ > ブログ > 検索結果ページ」という感じで、トップページと検索結果ページの間に投稿ページ(記事一覧ページ、ブログトップページ)が入る方が構造的に自然かと思います。

パンくずリスト系のプラグイン(Breadcrumb NavXT)とかであれば設定画面からいじれそうだなと思っていましたが、案外できなかったのでfunctions.phpでカスタマイズしました。

検索結果ページのパンくずリストに投稿ページ(記事一覧)の階層を追加する方法

テーマのfunctuons.phpに以下を追記してください。

/* 検索結果ページのパンくずリストにブログ(投稿ページ)という階層を追加
---------------------------------------------------------- */
function bcn_add($bcnObj) {
	if (is_search()) { //検索結果ページ
		$bcnObj->add(new bcn_breadcrumb('ブログ', null, array('archive'), home_url('/blog/'), null, true));
		$trail_tmp = clone $bcnObj->trail[1];
		$bcnObj->trail[1] = clone $bcnObj->trail[2];
		$bcnObj->trail[2] = $trail_tmp;    
	} 
	return $bcnObj;    
}
add_action('bcn_after_fill', 'bcn_add');

4行目の「ブログ」はパンくずリストの階層として表示させたいテキスト、「/blog/」はそこからリンクさせたいURLのスラッグを指定します。

検索結果ページのパンくずリストに投稿ページが表示されない理由

ここからは余談ですが、WordPressサイトの検索結果ページで、なぜパンくずリストが「トップページ > 検索結果ページ」という構造になるのかについて。

これはしっかりリサーチした訳じゃなくて、僕の中で「おそらくこういうことだろう」と思っているという話なのですが、WordPressのデフォルトの構造が最新の投稿から一覧表示されるものになっているからではないかと思います。

つまりWordPressサイトのトップ=ブログトップページ(最新の投稿が一覧表示されるページ)として運用するのが標準とされているため、パンくずリストも「トップページ > 検索結果ページ」となるわけです。

またWordPressサイトで記事検索をかけると投稿だけでなく固定ページも検索対象となりますが、これもWordPressをデフォルトの構造で運用するケースを想定しているからではないかと思われます。

ただ、WordPressを使ってコーポレートサイトのような設計のサイトを構築する場合は、トップページとブログトップは別個になっていて、検索結果から固定ページ(コーポレートサイトの下層ページ)は除外した方が都合がいいケースも少なくないです。

本来であればダッシュボードの「設定」→「表示設定」にある「ホームページの表示」で「固定ページ」を選択した場合は、階層構造も「トップページ > ブログ > 検索結果ページ」というようにトップページ(ホームページ)とブログ(投稿ページ)も階層化してくれればいいのですが、現状そうはなっていないので都度調整するしかなさそうです。

ちなみに検索対象から固定ページを除外する方法は、こちらの『WordPressの検索で投稿のみを検索対象にする』という記事で紹介していますので、合わせてどうぞ。