WordPressのカテゴリページでパンくずを表示する方法
カテゴリには親子関係があります。
祖先 > 親 > 子 ...
なのでカテゴリページにパンくずを表示したいとき、
親カテゴリを持つページでは、祖先をさかのぼって表示をする必要があります。
やりたいこと
・子カテゴリでなければ、祖先はないので何もせず現在のカテゴリを表示。
・子カテゴリであれば、その祖先カテゴリを取得し表示、その後現在のカテゴリを表示。
・子カテゴリでなければ、祖先はないので何もせず現在のカテゴリを表示。
・子カテゴリであれば、その祖先カテゴリを取得し表示、その後現在のカテゴリを表示。
カテゴリページでパンくずを表示する
祖先を取得する為にまずはページの情報を取得してくれる関数を呼び出します。
<?php $category = get_queried_object(); ?>
get_queried_object() | カテゴリページで呼び出すとタクソノミー情報やカテゴリ情報を返してくれます。 |
---|
この get_queried_object() を使って表示中のカテゴリが親か子(or孫)かを判別します。
以下まとめです。
<ul> <li><a href="<?php bloginfo('url'); ?>">HOME</a></li> <li> > </li> <?php // ページの情報を取得 $category = get_queried_object(); // 現在のカテゴリが子であれば以下の処理を行う(0でなければ子) if ( $category->parent != 0 ): // 指定したカテゴリIDの祖先IDを配列で取得(子、親、祖先順) $ancestors_arr = get_ancestors($category->cat_ID, 'category'); // 祖先から表示したいので、上の配列を逆にソート(祖先、親、子順) $ancestors_arr = array_reverse($ancestors_arr); // ループで祖先から順にリンク、カテゴリ名を取得し表示 foreach ( $ancestors_arr as $ancestor ): ?> <li> <a href=<?php echo get_category_link($ancestor); ?>"> <?php echo get_cat_name($ancestor);?> </a> </li> <li> > </li> <?php endforeach; endif; // 現在のカテゴリ名を表示 // (表示中カテゴリが子でなければ、これだけ表示される) ?> <li><?php single_cat_title(); ?></li> </ul>
これでカテゴリを階層形式で表示することができます。
祖先(リンク付き) > 親(リンク付き) > 子
関連記事