検索結果でのパンくずに対応するテンプレート記述
公開日:
更新日:
Googleの検索結果に表示されるパンくずのマークアップが可能となりましたので、WordPressのテンプレートを対応させてみました。
パンくずのマークアップ方法については、Googleのヘルプページをご参照ください。
WordPressでは、get_category_parentsという関数を使い、自動的にaタグのついたパンくずを出力することが多いと思いますので、microdataよりもRDFaの方が適しています。
では、さっそくサンプルコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | <?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でパンくずが表示されるというものではありません。