WordPress でサイトの階層構造を明確にするために便利な「パンくずリスト(Breadcrumb)」を PHP で実装する方法を紹介します。
本記事では is_front_page()
、is_page()
、is_category()
などの条件分岐を活用し、親ページの情報を取得する方法も解説します。
1. パンくずリストとは?
- ユーザーの現在地を示すナビゲーション
- SEO 効果やユーザビリティ向上のメリット
2. コードの解説
<?php if ( ! is_front_page() ) : ?>
<div class="breadcrumb no_bg">
<a href="<?= home_url(); ?>">ホーム</a>
<?php if ( is_page() && has_post_parent() ) :
$ancestors_ids = array_reverse(get_post_ancestors( $post ));
foreach ( $ancestors_ids as $ancestors_id ) :
$ancestors = get_post($ancestors_id);
echo '<a href="' . home_url( $ancestors->post_name.'/' ) . '">' . $ancestors->post_title . '</a>';
endforeach;
echo '<span>' . get_the_title() . '</span>';
elseif ( is_category() ) : ?>
<span><?php single_cat_title(); ?></span>
<?php else : ?>
<span><?php the_title(); ?></span>
<?php endif; ?>
</div>
<?php endif; ?>
(1) フロントページでは表示しない
<?php if ( ! is_front_page() ) : ?>
→ is_front_page()
はサイトのトップページかどうかを判定する関数。フロントページではパンくずリストを非表示にする。
(2) 基本のパンくずリスト構造
<div class="breadcrumb no_bg">
<a href="<?= home_url(); ?>">ホーム</a>
→ home_url();
でサイトのトップページ URL を取得し、「ホーム」リンクを作成。
(3) 固定ページの場合、親ページを取得
if ( is_page() && has_post_parent() ) :
→ 固定ページで親ページがある場合、get_post_ancestors( $post )
を使って親ページのリストを取得し、リンクを作成。
(4) カテゴリーページの場合
elseif ( is_category() ) :
<span><?php single_cat_title(); ?></span>
→ カテゴリーアーカイブページでは、そのカテゴリー名を表示。
(5) それ以外のページタイトル
else :
<span><?php the_title(); ?></span>
→ 通常のページや投稿では the_title()
で現在のページタイトルを表示。
3. まとめ
PHP を使ってシンプルなパンくずリストを実装する方法を紹介しました。
基本のコードをカスタマイズし、自分のサイトに合ったパンくずを作成してみましょう!