PR

WordPress プラグインなしでパンくずリストを表示

スポンサーリンク
スポンサーリンク

パンくずリスト

WordPressのパンくずリストを、プラグインを使わずに設置する方法を紹介します。

最近のWordPressテーマやブログテンプレートには、最初からパンくずリスト出力が標準装備されているものが多く、このブログで使っているCocoonをはじめ、最近伸びているSWELLではパンくずリストの表示位置やデザインが変更できます。

とはいえ、WordPressの公式テーマを使う場合や、企業向けのWordPressサイトを一から作る場合は、自前でパンくずリストを設置する必要があります。

WordPressにはパンくずリスト表示用プラグインがたくさんありますが、今回はプラグインを使わずにパンくずリストを設置する方法を紹介します。

パンくず用のプラグインを使いたい方は、このページの最後で紹介しているのでご参照ください。

スポンサーリンク

パンくずリストとは?

パンくずリスト

パンくずリストとは、webサイトやブログ内での位置を視覚的にわかりやすくするために、滞在中のページを階層順にリスト化して表示したものです。このブログにもタイトルの上にパンくずリストが表示されていますね。

規模の大きいサイトだと、現在どの階層のページを見ているのかがわかりにくいのですが、パンくずリストがあれば、サイト内の現在位置が直感でわかるようになります。

また、パンくずリストは、ユーザビリティの向上だけではなく、SEOにも重要な役割を果たしています。

検索エンジンにサイトの構造を正しく認識させることは、SEOの重要なポイントの一つなのですが、パンくずリストを表示させることで、検索エンジンにサイトの階層や構造を正確に把握させることができます。

ちなみに、「パンくず」という名称の由来ですが、童話「ヘンゼルとグレーテル」の中で、主人公が森の中で迷わないように、パンくずを落としながら歩いたというお話から来ています。英語では「breadcrumbs」と表記します。

プラグインなしでパンくずリストを設定

WordPressには、パンくずリストを表示するためのプラグインがたくさんありますが、今回はプラグインを使わずにパンくずリストを表示させることにしました。

パンくずリスト表示コードは、bl6.jpさんの記事から引用させていただきました。ありがとうございます。

WordPressでパンくずリストをmicrodataを使ってマークアップするやり方 – bl6.jp
そういえばこのサイトではまだパンくずリストを作成していなかったので今回新たに作ってみました。パンくずリストを作成することでGoogleの検索結果にも表示されるので、Webサイトを運営している人は作っておいて損はなさそうですね。

こちらのコードをそのまま使った場合、階層化されたパンくずリストが横一列ではなく、改行されて縦に並びます。パンくずリストの横にある「>」マークも下層では表示されないので、独自に改良を加えました。

パンくずリスト 階層化

改良後のコードで表示させたパンくずリストです。ちゃんと横一列に並び、「>」マークも付くようになりました。

パンくずリスト 横一列並び

パンくずリスト表示コード functions.php記載用

まずはfunctions.phpに以下のコードを記載します。このコードは投稿ページだけでなく、カテゴリや固定ページにも対応、固定ページが親子構造になっている場合でもパンくずリストを出力させることができます。

また、microdata形式による構造化マークアップにも対応しています。自動的にmicrodataコードがパンくずと共に生成されるので、検索結果にパンくずを表示させることができます。

※ functions.php は WordPress を動作させるための重要なファイルです。変更すると WordPress が動作しなくなる可能性があるので、このコードを記述する前に functions.php をバックアップしておいてください。

// パンくずリスト
function breadcrumb(){
    global $post;
    $str ='';
    if(!is_home()&&!is_admin()){
        $str.= '<div id="breadcrumb" class="cf"><div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:table-cell;">';
        $str.= '<a href="'. home_url() .'" itemprop="url"><span itemprop="title">ホーム</span></a> &gt;&#160;</div>';
        if(is_category()) {
            $cat = get_queried_object();
            if($cat -> parent != 0){
                $ancestors = array_reverse(get_ancestors( $cat -> cat_ID, 'category' ));
                foreach($ancestors as $ancestor){
$str.='<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:table-cell;"><a href="'. get_category_link($ancestor) .'" itemprop="url"><span itemprop="title">'. get_cat_name($ancestor) .'</span></a> &gt;&#160;</div>';
                }
            }
$str.='<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:table-cell;"><a href="'. get_category_link($cat -> term_id). '" itemprop="url"><span itemprop="title">'. $cat-> cat_name . '</span></a> &gt;&#160;</div>';
        } elseif(is_page()){
            if($post -> post_parent != 0 ){
                $ancestors = array_reverse(get_post_ancestors( $post->ID ));
                foreach($ancestors as $ancestor){
                    $str.='<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:table-cell;"><a href="'. get_permalink($ancestor).'" itemprop="url"><span itemprop="title">'. get_the_title($ancestor) .'</span></a> &gt;&#160;</div>';
                }
            }
        } elseif(is_single()){
            $categories = get_the_category($post->ID);
            $cat = $categories[0];
            if($cat -> parent != 0){
                $ancestors = array_reverse(get_ancestors( $cat -> cat_ID, 'category' ));
                foreach($ancestors as $ancestor){
                    $str.='<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:table-cell;"><a href="'. get_category_link($ancestor).'" itemprop="url"><span itemprop="title">'. get_cat_name($ancestor). '</span></a>→</div>';
                }
            }
            $str.='<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb" style="display:table-cell;"><a href="'. get_category_link($cat -> term_id). '" itemprop="url"><span itemprop="title">'. $cat-> cat_name . '</span></a> &gt;&#160;</div>';
        } else{
            $str.='<div>'. wp_title('', false) .'</div>';
        }
        $str.='</div>';
    }
    echo $str;
}

パンくずリスト表示コード single.php page.php記載用

続いて、パンくずリストを表示させたい場所に以下の呼び出し用コードを貼り付けてください。

<?php breadcrumb(); ?>

ダッシュボード左側のメニューから「外観」→「テーマ編集」と進み、右側に表示されるテンプレートの中からsingle.php・page.phpを選択してコードを貼り付けます。パンくずリストはそのページのタイトル前後に表示させるのが一般的ですね。

また、archive.phpに貼り付けると、カテゴリや月別アーカイブでもパンくずリストを表示させることができます。カテゴリやアーカイブはテーマによって該当するテンプレートが違うので注意してくださいね。

スポンサーリンク

構造化データテストツールでパンくず確認

パンくずリストがきちんと認識されているかどうかは、Googleの構造化データテストツールにURLを入力することで確認できます。

Schema Markup Testing Tool | Google Search Central  |  Google for Developers
Use the Rich Result Test to see what Google results can be generated for your pages and the schema markup validator for generic schema validation.

パンくずを確認したいページのURLを入力して「テストを実行」をクリックしてください。

構造化データでパンくず確認

対象ページのHTMLが左側に、検出された項目が右側に表示され、データの検証を行います。パンくずは「BreadcrumbList」で確認します。

構造化データでパンくず確認

パンくずは構造化データとして認識されています。「エラーなし」「警告なし」となっていればOKです。

構造化データでパンくず確認

WordPress パンくずリスト設定プラグイン

WordPressの公式テーマなどはパンくず機能がないので、プラグイン等を使って設定する必要があります。

WordPressには、パンくずリストを表示するためのプラグインがたくさんあります。メジャーなパンくずプラグインは以下の通りです。

  • Breadcrumb NavXT
  • Really Simple Breadcrumb
  • Breadcrumb Trail
  • Breadcrumb (パンくずリスト)

この中から自分好みのパンくずリストプラグインを使ってみてください。

Breadcrumb NavXT

「wordpress プラグイン パンくず」で検索してみると、Breadcrumb NavXTというプラグインの情報がたくさん出てきました。パンくずリスト表示ならこれが定番のようです。

こちらにBreadcrumb NavXTの詳しい使い方が掲載されています。プラグインを使ってパンくずリストを表示させたい方は、この記事がオススメです。

Breadcrumb NavXTプラグインの使い方(パンくずリストの表示)
Breadcrumb NavXT プラグインは WordPress を使ったブログにパンくずリストを表示してくれるプラグインです。パンくずリストはカテゴリ―やタグ、日付などをベースに表示させることができます。ここでは Breadcrumb NavXT プラグインのインストール方法と使い方について解説します。
タイトルとURLをコピーしました