WordPressに自作のパンくずリストを設置する方法

WordPressカスタマイズまとめ

今回はWordPressにプラグイン無しで自作の「パンくずリスト」を作り設置する方法とCSSで位置調整までの解説です。「パンくずリスト」は私のブログにも設置しているこの部分です。

パンくず-1

このパンくずの部分は利用されているテーマですでに設置されている場合もありますし、パンくずを設置するプラグインなどもありますが、今回はパンくずリストを自作して設置します。

今回パンくずリストを設置するに当たって「りくまろぐ」様の記事が非常に参考にさせて頂きました。というかほ位置調整以外はほとんど引用させて頂きました。ありがとうございます。

私の場合はTwenty Twelveを利用してますので、Twenty Twelveでの設置方法を図解で解説してみます。

スポンサーリンク

パンくずリストを設置する理由

最初にこのパンくずリストがなぜ必要なのかという部分を説明しておきますね。パンくずリストは訪問者が今ブログの中のどのカテゴリーの記事を読んでいるのか?という事が分かりやすい道案内的な役割をします。

これが設置してあった方が親切ですよね。それからこのパンくずリストは検索結果にもいい影響があると言われています。

パンくず-2

このように検索結果にもこのパンくずリストが表示されます。設置しなくても問題はありませんが、やらないよりはやった方がいいと思いません?

パンくずリストを設置する手順

パンくずリストの作り方や設置には2通りのやり方があります。

  1. プラグインで簡単設置
  2. 子テーマで該当する場所をカスタマイズ

1番目のプラグインを使うと設置は楽ですが、仕組みを知っておかないとプラグインの不具合があった時に困ってしまいます。そのためちょっと手間はかかりますが私は子テーマをカスタマイズして設置する方法にしています。

今回はこのカスタマイズの方法を紹介します。カスタマイズのいい練習にもなるのでやってみましょう。

パンくずリスト設置に必要なファイル

パンくずを設置する場合には子テーマに該当するファイルをコピーしておきます。子テーマの作り方で紹介しましたよね。

今回使うファイルは次の通りです。これらを子テーマに追加しておいて下さい。

  1. single.php:個別記事ページのテンプレート
  2. category.php:カテゴリーページのテンプレート
  3. tag.php:タグページのテンプレート

以上3つのテンプレートにそれぞれパンくずを設置しますので、親テーマ(TwentyTwelve)の3つのファイルをコピーして子テーマに追加しておきましょう。それからパンくず設置のコードを追加するとパンくずが縦に並びますので、最後にこれを横並びにして位置の微調整をしていきます。

個別記事ページ「single.php」にパンくずを設置

それでは子テーマの「single.php」にパンくず設置のコードを足して行きましょう。「single.php」の最初の方にこのようなコードがあると思います。

<div id="primary" class="site-content">
		<div id="content" role="main">

この部分の下にパンくず設置のコードを入れます。

<?php /*--- パンくずリスト --- */ ?>
<div id="breadcrumb">
<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
<a href="<?php echo home_url(); ?>" itemprop="url">
<span itemprop="title">ホーム</span>
</a> ›
</div>
<?php /*--- カテゴリーが階層化している場合に対応させる --- */ ?>
<?php $postcat = get_the_category(); ?>
<?php $catid = $postcat[0]->cat_ID; ?>
<?php $allcats = array($catid); ?>
<?php 
while(!$catid==0) {    /* すべてのカテゴリーIDを取得し配列にセットするループ */
    $mycat = get_category($catid);     /* カテゴリーIDをセット */
    $catid = $mycat->parent;     /* 上で取得したカテゴリーIDの親カテゴリーをセット */
    array_push($allcats, $catid);
}
array_pop($allcats);
$allcats = array_reverse($allcats);
?>
<?php /*--- 親カテゴリーがある場合は表示させる --- */ ?>
<?php foreach($allcats as $catid): ?>
<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
<a href="<?php echo get_category_link($catid); ?>" itemprop="url">
<span itemprop="title"><?php echo get_cat_name($catid); ?></span>
</a> ›
</div>
<?php endforeach; ?>
<div><?php the_title(); ?></div>
</div>    <!--- end [breadcrumb] -->

これをこのままコピーして追加します。これで個別記事にパンくず設置が完了ですが、このままだと縦並びになっていると思います。

パンくず-3

これは最後に調整しますので、まずは全てのパンくずの設置を完了してしまいましょう。

カテゴリーページ「category.php」にパンくずを設置

子テーマの「category.php」の最初の方に次の記述があります。

<section id="primary" class="site-content">
		<div id="content" role="main">

この部分の下にパンくず設置のコードを入れます。

<?php /*--- パンくずリスト --- */ ?>
<div id="breadcrumb">
<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
<a href="<?php echo home_url(); ?>" itemprop="url">
<span itemprop="title">ホーム</span>
</a> ›
</div>
<?php /*--- カテゴリーが階層化している場合に対応させる --- */ ?>
<?php $catid = $cat; /* 表示中のカテゴリーIDをセット */ ?>
<?php $allcats = array(); /* 親カテゴリーをセットする配列を初期化しておく */ ?>
<?php 
while(!$catid==0) {    /* すべてのカテゴリーIDを取得し配列にセットするループ */
    $mycat = get_category($catid);     /* カテゴリーIDをセット */
    $catid = $mycat->parent;     /* 上で取得したカテゴリーIDの親カテゴリーをセット */
    array_push($allcats, $catid);
}
array_pop($allcats);
$allcats = array_reverse($allcats);
?>
<?php /*--- 親カテゴリーがある場合は表示させる --- */ ?>
<?php foreach($allcats as $catid): ?>
<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
<a href="<?php echo get_category_link($catid); ?>" itemprop="url">
<span itemprop="title"><?php echo get_cat_name($catid); ?></span>
</a> ›
</div>
<?php endforeach; ?>
<?php /*--- 最下層のカテゴリ名を表示 --- */ ?>
<div><?php single_cat_title(); ?></div>
</div>    <!--- end [breadcrumb] -->

これをこのままコピーして貼り付けて下さい。

タグページ「tag.php」にパンくずを設置

これも同じ要領です。「tag.php」の最初の方に次の記述があります。

<section id="primary" class="site-content">
		<div id="content" role="main">

この下にパンくずのコードを入れます。

<?php /*--- パンくずリスト --- */ ?>
<div id="breadcrumb">
<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
<a href="<?php echo home_url(); ?>" itemprop="url">
<span itemprop="title">ホーム</span>
</a> ›
</div>
<?php /*--- カテゴリーが階層化している場合に対応させる --- */ ?>
<?php $catid = $cat; /* 表示中のカテゴリーIDをセット */ ?>
<?php $allcats = array(); /* 親カテゴリーをセットする配列を初期化しておく */ ?>
<?php 
while(!$catid==0) {    /* すべてのカテゴリーIDを取得し配列にセットするループ */
    $mycat = get_category($catid);     /* カテゴリーIDをセット */
    $catid = $mycat->parent;     /* 上で取得したカテゴリーIDの親カテゴリーをセット */
    array_push($allcats, $catid);
}
array_pop($allcats);
$allcats = array_reverse($allcats);
?>
<?php /*--- 親タグがある場合は表示させる --- */ ?>
<?php foreach($allcats as $catid): ?>
<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
<a href="<?php echo get_category_link($catid); ?>" itemprop="url">
<span itemprop="title"><?php echo get_cat_name($catid); ?></span>
</a> ›
</div>
<?php endforeach; ?>
<?php /*--- タグ名の表示 --- */ ?>
<div><?php single_cat_title(); ?></div>
</div>    <!--- end [breadcrumb] -->

以上でパンくずの設置自体は完了です。後は位置調整をしていきます。

最後に位置の調整をする

パンくずを設置した段階では縦並びになっていると思いますのでこれを横並びにして位置の調整をします。今度は子テーマのスタイルシート (style.css)に次のコードを追加して下さい。

/* パンくず */
div#breadcrumb div {
line-height: 20px; /* 文字の高さ */
display: inline; /* 横並びに */
}

文字の高さはお好みの数字に変更して下さい。これで横並びになるはずです。

パンくず-4

横並びにはなりましたが、位置が微妙ですね、メニューナビからは間隔が開き過ぎですし、記事タイトルとの間隔は狭すぎですよね。そのため細かい位置調整をしてみましょう。次のコードを追加して下さい。

/* パンくず位置調整 */
div#breadcrumb {
margin:-15px 0 20px 0;}
.site-header {
padding: 24px 0 0 0;}

「margin:」という部分でパンくずリストの位置を調整しています。ここの「-15px」を変更するとパンくずの上の余白が変わります。

「20px」の部分がパンくずの下の間隔です。これも必要であれば変更して下さい。それから「.site-header」というのは元々ヘッダー下に余白が設定されていたのでこれを調整してみました。これはこのままでOKです。結果このようになりました。

パンくず-5

以上WordPressにパンくずリストの設置は完了です。

コメント

  1. しげぞう より:

    okinagatarashi様

    再度コメントありがとうございます!パンくず設置できたようで良かったです。えっと「 カテゴリー別アーカイブ: Japanese Style 」と表示されているのはおそらくカテゴリーページだと思います。この部分がカテゴリーページ全体のタイトルになっています。詳しくはこちらの記事で書いてますので、一度読んで見て下さい。
    カテゴリー別アーカイブの表示をカスタマイズ

  2. okinagatarashi より:

    こんにちは。
    パン屑リストはサクッと出来て驚き!です。って、いつもですが!
    設定をしたらパン屑リストの下に
    「 カテゴリー別アーカイブ: Japanese Style 」
    って、いうのが入ってしまいました。
    なにこれ?って感じですが・・・
    どうぞ、ご教授宜しくお願いします。

  3. poko より:

    >mururun様

    わざわざコメントありがとうございました。返事が遅れてすみませんでした。現在サーバーの移転中でサーバー切り替え中だったため、コメントが上手く反映できませんでした。現在はサーバーも無事切り替わっているようですのでまた質問等ある時にはコメント頂けると嬉しいです。今後ともどうぞよろしくお願い致します。

  4. marurun より:

    先ほど質問させていただいたのですが固定ページへの設置もなんとかできましたので大丈夫になりました(^^)
    ありがとうございました。

  5. marurun より:

    とても分かりやすくて無事パンくずリストをつけられました。
    ありがとうございました。
    もしよかったら固定ページに付ける付け方も教えてください。
    single.php用のをpage.phpに貼ったところ、パンくずリストができはしたのですが、
    ホーム>子ページとなってしまい親にあたる部分が表示されません。何か方法はありますでしょうか?
    また、カテゴリーページとタグページはどこに表示されてるのか分からないのですが、カテゴリーページとタグページってなんですか?そのページを作っていないのかも知れませんが・・・。初心者の質問ですいません(><)
    ちなみにテーマはSmartline Liteでサイトはこれです。

  6. tuukai より:

    こんにちは。

    物凄くわかりやすいですね、
    お蔭さまで、パンクズリストを設置することが出来ました!

    有難うございました。

タイトルとURLをコピーしました