APPOFIT > WordPress > WordPressテンプレートカスタマイズ > 検索結果でのパンくずに対応するテンプレート記述

検索結果でのパンくずに対応するテンプレート記述

Googleの検索結果に表示されるパンくずのマークアップが可能となりましたので、WordPressのテンプレートを対応させてみました。
パンくずのマークアップ方法については、Googleのヘルプページをご参照ください。

WordPressでは、get_category_parentsという関数を使い、自動的にaタグのついたパンくずを出力することが多いと思いますので、microdataよりもRDFaの方が適しています。
では、さっそくサンプルコードです。

<div id="bread" xmlns:v="http://rdf.data-vocabulary.org/#">
<?php // 1階層目:ホーム以外の場合、ホームへのリンクを出力
	if(!is_home()){
?>
		<span typeof="v:Breadcrumb"><a href="<?php bloginfo('url'); ?>/" rel="v:url" property="v:title"><?php bloginfo('name'); ?></a> &gt; </span>
<?php } ?>
<?php // 中間階層:カテゴリとエントリー(ページ階層は未実装)
	if(is_category()){
	// カテゴリの場合:上位のカテゴリリンクを生成
		$breadcrumb = "<span>" . get_category_parents($cat, true, ' &gt; </span><span>') . "</span>";
		// 最下層を削除
		$pattern = '/<span><a href=\"([^>]+)\">([^<]+)<\/a> &gt; <\/span><span><\/span>/i';
		$breadcrumb = preg_replace($pattern,'',$breadcrumb);
		// aタグ部分をRDFaでマークアップ
		$breadcrumb = preg_replace('/<a href="([^>]+)">/i','<a href="\\1" rel="v:url" property="v:title">',$breadcrumb);
		$breadcrumb = str_replace('<span>','<span typeof="v:Breadcrumb">',$breadcrumb);
		// ページに出力
		echo $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 = "<span>" . get_category_parents($this_cat, true, ' &gt; </span><span>') . "</span>";
		// 不要なspanタグを削除
		$breadcrumb = str_replace('</span><span></span>','</span>',$breadcrumb);
		// aタグ部分をRDFaでマークアップ
		$breadcrumb = preg_replace('/<a href="([^>]+)">/i','<a href="\\1" rel="v:url" property="v:title">',$breadcrumb);
		$breadcrumb = str_replace('<span>','<span typeof="v:Breadcrumb">',$breadcrumb);
		// ページに出力
		echo $breadcrumb;
	}
?>
<?php // 最下層:表示中のページ
	// 日付アーカイブの場合(年月を想定)
	if(is_date()){
		$date = single_month_title('',FALSE);
?>
		<span typeof="v:Breadcrumb"><b><strong property="v:title"><? echo ereg_replace('^[0-9]+.?月','',$date).' 年 '.ereg_replace('[0-9]+$','',$date); ?></strong></b></span>
<?php
	// エントリーページ
	}elseif(is_single()){
?>
		<span typeof="v:Breadcrumb"><b><strong property="v:title"><?php the_title(''); ?></strong></b></span>
<?php
	// それ以外のものはwp_titleで対応する
	}elseif(!is_home()){
?>
		<span typeof="v:Breadcrumb"><b><strong property="v:title"><?php wp_title(''); ?></strong></b></span>
<?php
	}
?>
</div>

まずはパンくずを括っているdivに、このdivの中身がパンくずであるという意味を示すネームスペースを宣言します。
各パンくずはspanで囲い、typeof=”v:Breadcrumb”としてパンくずの要素であることを識別できるようにします。
パンくずのリンク部分には、aタグにrel要素とproperty要素を追加し、URLとパンくずのタイトルであることを明示します。

なお、サンプルコードは当サイトで使用しているものとは若干異なりますので、自己責任にてカスタマイズ等を行ってください。
また、パンくずをマークアップしたからと言って、確実にSERPでパンくずが表示されるというものではありません。

検索結果でのパンくずに対応するテンプレート記述へのコメント

コメント一覧 (0件)

コメントはまだありません。

検索結果でのパンくずに対応するテンプレート記述 関連記事

rel="next"およびrel="prev"を使ったページ区切り

複数ページの関連性を示すrel=prev/nextとwordpressの問題

Googleが、複数ページにまたがる記事の関連性を知らせるためのHTMLタグをサポートしました。 rel="nex… [2011/12/05]
ヴィジェットの作成

オリジナルのヴィジェットを作成する

WordPressのテーマで使えるヴィジェットについて、最初から用意されているもの以外にオリジナルのヴィジェットを使いた… [2011/01/19]
Googleマップをショートコードで実装する

Googleマップをショートコードで実装する

WordPressのテンプレートにGoogleマップをショートコードで実装する方法をご紹介します。 Googleマップ… [2010/12/14]
記事一覧をカスタムフィールドでソートする

記事一覧をカスタムフィールドでソートする

記事一覧をカスタムフィールドでソートしたいという要望を受けて調べていたところ、実は記事取得のパラメータ指定で実装できると… [2010/12/14]
WordPress 3.0で複数ページ構成の記事に不具合

WordPress 3.0で複数ページ構成の記事に不具合

環境依存は強いと思いますが、複数ページ構成の記事で不具合が出ましたので、覚え書きです。 WordPressで運用してい… [2010/06/30]