WordPress 4.8 を使用します。
カテゴリーページ(category.php)で親カテゴリーを取得
まずは親カテゴリーの情報を取得する必要があります。
カテゴリーページの場合は$cat
で現在のカテゴリーIDが取得できます。
なのでget_category($cat)
とすればカテゴリー情報を取得できますね。
さらにparent
がある場合はget_category($this_category->parent)
というようにすれば親の情報を取得できます。
今回はサイドバーで表示したいのでglobalな変数($this_category)に取得したカテゴリーを入れてます。
category.php
global $this_category; // IDからカテゴリー情報を取得 $this_category = get_category($cat); // 親カテゴリーがある場合取得 if ($this_category->parent) { $this_category = get_category($this_category->parent); }
シングルページ(single.php)で所属しているカテゴリーの親を取得
シングルページではget_the_category
でカテゴリー情報を取得できます。
WordPressのカテゴリーは複数設定できるので配列を取得できますので、配列の最初のカテゴリーを取り出しましょう。
あとは先程と同じですね。
single.php
global $this_category; $cats = get_the_category(); // 最初のカテゴリーを取り出す $this_category = $cats[0]; // 親カテゴリーを取得 if ($this_category->parent){ $this_category = get_category($this_category->parent); }
サイドバー(sidebar.php)で表示
最後にサイドバーで子カテゴリーの一覧を表示してナビゲーションを作成してみます。
get_categories
の
sidebar.php
<?php global $this_category; $categories = get_categories(array( 'child_of' => $this_category->term_id, 'taxonomy' => 'category' )); if ($categories): ?> <ul> <?php foreach($categories as $value): ?> <li><a href="<?= esc_url(get_category_link($value->term_id)) ?>"><?= esc_html($value->name) ?></a></li> <?php endforeach; ?> </ul> <?php endif; // $categories ?>