パンくずリンクの出力方法

WordPressでのパンくずリンクの出力方法をご紹介します。
パンくずリンクとは、下記のイメージのように、トップからの階層をどのように辿ったかのリンク表示で、戻る時の道しるべになったり同じカテゴリの内容を見に行ったりと何かと便利なもので、SEO的にも効果があると言われています。

今回ご紹介するパンくずのサンプルコードは、リストタグを使うタイプのものです。
パンくずの構成は、コード上、大きく3つに分けられます。

まずは最上位のトップを示す部分。
トップへのリンクは非常に簡単で、標準関数であるbloginfoを使い出力します。

次に中間層のカテゴリなどを出力する部分。
ここは、今いるページの上位階層にあたるものを順番にリンクで出力する部分になります。
なお、サンプルではカテゴリ構造のみが出力可能となっています。
必要に応じて、ライター一覧やカテゴリ一覧などのページを挟む場合はカスタマイズしてお使いください。

最後に自分がいるページを表示する部分。
この部分はthe_titleなどの標準関数で簡単に実装可能です。

では、サンプルコードです。

<?php // トップページには出力しません
if(!is_home()):
?>
	<ul>
	<li class="first"><a href="<?php bloginfo('url'); ?>/"><?php bloginfo('name'); ?></a></li>

<?php // 中間部分:上位階層のパンくず
	if(is_category()){
	// カテゴリページ
		$remove_str="<li><a href="([^>]+)">([^<]+)</a></li><li></li>";
		$breadcrumb= "<li>" . get_category_parents($cat, true, "</li><li>") . "</li>";
		echo ereg_replace($remove_str,'',$breadcrumb);
	}elseif (is_single()) {
	// 記事ページ
		if(is_attachment()){
		// 画像等の記事配下のページ
			$this_cats = wp_get_post_categories($post->post_parent);
		}else{
			$this_cats = wp_get_post_categories($post->ID);
		}
		$this_cat = $this_cats[count($this_cats)-1];
		$breadcrumb= "<li>" . get_category_parents($this_cat, true, '</li><li>') . "</li>";
		echo ereg_replace('</li><li></li>','</li>',$breadcrumb);
	}
?>

<?php // 今いるページを表示
	if(is_date()):
	// 月別アーカイブ
		$date = single_month_title('',FALSE);
?>
		<li><b><strong><? echo ereg_replace('^[0-9]+.?月','',$date).' 年 '.ereg_replace('[0-9]+$','',$date); ?></strong></b></li>
<?php
	else:
	// それ以外
?>
		<li><b><strong><?php the_title(''); ?></strong></b></li>
<?php
	endif;
?>
	</ul>
<?php endif; ?>

中間部分で、少し面倒なことをやっていますので、解説しておきます。
この部分は標準関数get_category_parentsを使いリンクを生成していますが、リストタグで実装する場合のliの重なりや、今いるカテゴリページへのリンクなど不要なものが含まれますので、文字列置換で余分なものを削除しています。

なお、無責任で申し訳ありませんが、サンプルコードは実際に使っている物から編集しておりますので、もし動かなかったらごめんなさい。

パンくずリンクの出力方法にコメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です