【WordPress】特定の親カテゴリーに所属する子カテゴリー一覧を親も含めて表示する

スポンサーリンク

概要

固定ページなどでカテゴリー一覧を表示する場合、全てのカテゴリーであればwp_list_categories()を使うだけで表示される。

しかし、特定のカテゴリーとその子カテゴリーだけを表示したい場合、WordPressで用意されている関数では実現できないようなので、ショートコードを使って実装してみた。

手順

  1. functions.phpにショートコードの定義を追加
function getCategoryList($args)
{
  $ret = '';
  $categories = get_categories('show_count=1&orderby=term_order&order=asc&pad_counts=1');
  foreach ($categories as $category) {
    if ((int)$args['category'] === $category->term_id) {
      $ret .= '<li style="margin-top: 10px"><a href="'.get_category_link($category->term_id).'">'.$category->name.'</a> ('.$category->category_count.')</li>';
      break;
    }
  }
  foreach ($categories as $category) {
    if ((int)$args['category'] === $category->parent) {
      $ret .= '<li style="margin-left:50px"><a href="'.get_category_link($category->term_id).'">'.$category->name.'</a> ('.$category->category_count.')</li>';
    }
  }
  return $ret;
}

add_shortcode('categoryList', 'getCategoryList');
  1. 定義したショートコードを使う

固定ページや投稿ページ、ウィジェットなど、一覧を表示したい場所にカスタムHTMLを追加し、ショートコードを埋め込む。

[categoryList category=30]

category=xxの部分には親カテゴリーのカテゴリーIDを指定する。

コメント