検索結果でのパンくずに対応するテンプレート記述
公開日:
更新日:
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> > </span> <?php } ?> <?php // 中間階層:カテゴリとエントリー(ページ階層は未実装) if(is_category()){ // カテゴリの場合:上位のカテゴリリンクを生成 $breadcrumb = "<span>" . get_category_parents($cat, true, ' > </span><span>') . "</span>"; // 最下層を削除 $pattern = '/<span><a href="([^>]+)">([^<]+)</a> > </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, ' > </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でパンくずが表示されるというものではありません。