プラグイン不要!WordPressでパンくずリストを実装する方法|コピペで使えるサンプルコード付き

公開日:2026.06.27

WordPress

この記事には広告が含まれています。

はじめに

パンくずリスト(Breadcrumb)は、現在閲覧しているページがサイト内のどこに位置しているかを示すナビゲーションです。

例えば、以下のような表示になります。

ホーム > WordPress > プラグイン不要!WordPressでパンくずリストを実装する方法

ユーザーが現在地を把握しやすくなるだけでなく、SEOにも効果が期待できるため、多くのWebサイトで採用されています。

パンくずリストはSEOプラグイン(Yoast SEO、Rank Mathなど)でも表示できますが、オリジナルテーマでは「余計なプラグインを増やしたくない」というケースも少なくありません。

そこで今回は、プラグインを使わずにWordPressでパンくずリストを実装する方法を紹介します。

パンくずリストとは?

パンくずリストとは、サイト階層をユーザーへ分かりやすく伝えるナビゲーションです。

例えば、

ホーム
 └ WordPress
   └ パンくずリストの記事

なら、

ホーム > WordPress > パンくずリストの記事

と表示します。

これにより、

  • 現在地が分かる
  • 上位ページへ戻りやすい
  • クローラーがサイト構造を理解しやすい

というメリットがあります。

パンくずリストを設置するメリット

SEO対策になる

Googleはサイト構造を重視しています。

パンくずリストがあることで、

  • カテゴリー構造
  • ページ階層

を理解しやすくなります。

検索結果にもパンくずが表示されることがあります。


ユーザビリティが向上する

記事を読んだあと、

「WordPressカテゴリーへ戻りたい」

というケースがあります。

その際、

ホーム > WordPress

をクリックするだけで戻れます。


内部リンクが増える

カテゴリーへのリンクが増えるため、

内部リンクの最適化にもつながります。

実装場所

一般的には、

header.php

または

single.php
page.php
archive.php

などタイトルの上へ設置します。

パンくずリストのサンプルコード

以下をそのまま利用できます。

<?php
if (!is_front_page()):
echo '<nav class="breadcrumb">';
echo '<a href="' . home_url('/') . '">ホーム</a>';
if (is_single()) {
 $cat = get_the_category();
 if ($cat) {
  echo ' <span>></span> ';
  echo '<a href="' . get_category_link($cat[0]->term_id) . '">';
  echo esc_html($cat[0]->name);
  echo '</a>';
 }
 echo ' <span>></span> ';
 the_title();
} elseif (is_page()) {
 echo ' <span>></span> ';
 the_title();
} elseif (is_category()) {
 echo ' <span>></span> ';
 single_cat_title();
}
echo '</nav>';
endif;?>

コードの解説

トップページでは表示しない

if (!is_front_page()):

トップページだけ非表示になります。


ホームへのリンク

home_url('/');

ホームURLを取得します。

例えば、

https://example.com/

になります。


投稿ページ

is_single()

投稿ページだけ処理します。


カテゴリー取得

get_the_category();

現在の記事のカテゴリーを取得しています。


カテゴリーURL

get_category_link();

カテゴリー一覧へのリンクになります。


タイトル表示

the_title();

現在の記事タイトルです。

CSS例

.breadcrumb{
 margin-bottom:30px;
 font-size:14px;
}

.breadcrumb a{
 color:#3366cc;
 text-decoration:none;
}

.breadcrumb span{
 margin:0 6px;
 color:#999;
}

シンプルですが十分見やすくなります。

子カテゴリーがある場合

例えば、

WordPress
 └ カスタマイズ
   └ パンくずの記事

なら、

ホーム > WordPress > カスタマイズ > 記事

と表示したいケースがあります。

その場合は

get_category_parents();

を使用します。

$cat = get_the_category();
echo get_category_parents($cat[0], true, ' > ');

これだけで親カテゴリーも表示できます。

カスタム投稿の場合

通常の記事ではなく、

  • お知らせ
  • 制作実績
  • 商品

などのカスタム投稿を使う場合は、

is_singular('news');

などで条件分岐すると対応できます。

Schema.org(構造化データ)もおすすめ

パンくずリストは

BreadcrumbList

の構造化データを設定すると、

Googleが理解しやすくなります。

最近のSEOプラグインでは自動対応していますが、

オリジナルテーマでもJSON-LDを追加すれば実装可能です。

プラグインとの違い

プラグインでは

  • Rank Math
  • Yoast SEO
  • Breadcrumb NavXT

などがあります。

しかし、

オリジナルテーマなら

数十行のPHPだけで十分実装できます。

余計なプラグインを増やさないという点でもおすすめです。

実務で意識していること

実務ではパンくずリストを設置する際、

デザインだけでなく保守性も重視しています。

私がよく行うのは、

template-parts/breadcrumb.php

としてパーツ化する方法です。

そして、

<?php get_template_part('template-parts/breadcrumb'); ?>

を各テンプレートから呼び出しています。

こうすることで、

デザイン変更やカテゴリー追加があっても修正箇所が1か所で済みます。

案件でもこの方法を採用することが多く、管理しやすい実装になります。

まとめ

パンくずリストはSEOだけでなく、ユーザーの利便性向上にも役立つ重要な機能です。

オリジナルテーマであれば、プラグインを使わなくてもPHPだけで十分実装できます。

今回紹介したコードをベースに、

  • 子カテゴリー対応
  • カスタム投稿対応
  • 構造化データ対応

まで追加すれば、多くの案件でそのまま使えるパンくずリストになります。

私自身もWordPress案件では、パンくずリストをテンプレートパーツとして実装することが多く、保守性を考慮した構成を意識しています。

ぜひ今回のコードをベースに、自分のテーマへ組み込んでみてください。