IMUZA.com

Xserver<<WordPress(ConoHa)<<はてなブログ

ホーム / Wordpress / WordPress:階層化パンくずリストを複数表示する(プラグインなし)

WordPress:階層化パンくずリストを複数表示する(プラグインなし)

2022/11/23 Wordpress

以前プラグインなしの階層化パンくずリストを作ったのですが、ややカテゴリーの考えた方を勘違いしているところがありましたので作り直しました。

  • 階層化カテゴリー
  • get_category_parents を使った階層化パンくずリスト
    • get_category_parents

下記記事に決定版があります。

WordPress:階層化パンくずリスト決定版(プラグインなし、複数対応)

階層化カテゴリー

まず以前作った階層化パンくずリストの記事です。

WordPress:階層化パンくずリスト(プラグインなし)とページネーション、ページャー

この時点での階層化されたカテゴリーの認識は、階層化されたカテゴリーに属する記事は親子ともにカテゴリーに所属させなければいけないというものでした。

五十音順でカテゴリーを作っているケースですが、「と」に属する記事はその親カテゴリー「た行」にもチェックを入れなくちゃいけないと思いこんでいました。そうしないと「た行」のカテゴリーに表示されないと思っていたのですがそうではないようです。「と」にチェックを入れれば、その親「た行」のカテゴリーでも表示されます。

get_category_parents を使った階層化パンくずリスト

で、その場合のプラグインなし階層化パンくずリストです。

get_category_parents

get_category_parents という関数があります。

  • get_category_parents

指定されたカテゴリーの親カテゴリーのリストを取得します。 指定されたカテゴリーも含めて、階層の順序で出力します。
<?php echo get_category_parents( $cat, true, ‘ » ‘ ); ?>

記事のカテゴリーID($cat)を指定し、第2引数に true をすれば、第3引数をセパレーターにしたリンク付カテゴリー階層を出力してくれます。

これを使えば簡単にパンくずリストが作れます。なぜ前回この関数に気づかなかったのかわかりませんし、仮に気づいていたがなにか不都合があったにしてもその不都合に記憶がありません。

とにかく、この関数を使って階層化パンくずリストを作ってみます。

function get_imz_breadcrumbs( $post_id ) {
    $breadcrumbs = '<ul>';
    $categories = get_the_category( $post_id );
    foreach( $categories as $category ){
        $breadcrumbs .= '<li class="breadcrumb"><a href="'.esc_url(home_url('/')).'" >ホーム</a> &raquo; ';
        $id = $category->cat_ID;
        $breadcrumbs .= get_category_parents( $id, true, ' &raquo; ' );
        $breadcrumbs .= get_the_title( $post_id ) . '</li>';
    }
    echo $breadcrumbs . '</ul>';
}

この関数を functions.php に書いておき、記事ページで次のように書いておけば階層化されたパンくずリストが出力されす。複数カテゴリーにも対応しています。

<nav class="breadcrumbs"><?php get_imz_breadcrumbs(get_the_ID()); ?></nav>

出力されるコードは、

<nav class="breadcrumbs">
	<ul>
		<li class="breadcrumb"><a href="http://localhost:8000/" >ホーム</a> &raquo; <a href="http://localhost:8000/category/ta-column/">た行</a> &raquo; <a href="http://localhost:8000/category/ta-column/to/">と</a> &raquo; トップガン マーヴェリック</li>
	</ul>
</nav>

となります。

こんなに簡単でいいのかなという気にもなりますが、意図通りに出力されているわけですから問題はないでしょう。

常温便発送 のがみ 乃が美 高級生食パン 1本(2斤サイズ) のがみの食パン 生食パン 食パン のがみ 有名店 ...

常温便発送 のがみ 乃が美 高級生食パン 1本(2斤サイズ) のがみの食パン 生食パン 食パン のがみ 有名店 …

2,524円(03/21 14:17時点)
Amazon
WordPress:シンタックスハイライトprism.js導入
WordPress:コンテンツ幅で決めるメディアクエリのブレイクポイント
Twitter
Facebook
ブックマーク
LINEで送る

最初のサイドバー

最新記事

2023/03/21

WordPress:メール送信にGmailのSMTPを使う(プラグインなし)

2023/03/10

WordPress:サムネイル付き次の記事/前の記事

2023/02/28

Twitterシェアリンクはintent/tweetを使おう

2023/02/21

GoogleタグマネージャーとアナリティクスGA4

2023/02/8

WordPress:人気記事を直近の期間指定で表示する

最新記事を一覧で見る

よく読まれている記事

よく読まれている記事を一覧で見る

カテゴリー

  • はてなブログ214
  • WebTips109
  • javascript98
  • Joomla!88
  • Windows68
  • Wordpress65
  • CSS63
  • Joomla!更新53
  • Linux49
  • はてなテーマ45
  • Google34
  • Plamo33
  • はてなプラグイン25
  • php22
  • Node.js18
  • Ubuntu16
  • SASS16
  • laravel415
  • Chrome11
  • cms-style10
  • iPhone9
  • ConoHa WING6
  • Git入門6
  • genesis6
  • Python5
  • Android5
  • PC全般4
  • Facebook4
  • スマートフォン4
  • 静的サイトジェネレーター3
  • Firefox3
  • SSD3
  • Blankslate3
  • Docker3
  • Twitter2
  • GitHub2
  • Mactype2
  • はてなブクマ1
  • 映画1
  • youtube1
  • rails入門1
  • Xserver1

Footer

My Web Sites

  • @半径とことこ60分
  • そんなには褒めないよ。映画評
  • IMUZA.com
  • GitHub

Related Sites

  • WordPress公式
  • WordPress関数リファレンス
  • PHPマニュアル

Contact Us

  • お問い合わせフォーム
  • Twitter
  • Facebook
  • Feedly

Copyright © 2023 · IMUZA.com