joppot

コピペで絶対動く。説明を妥協しない

wordpressのget_categoriesでサブカテゴリーを含まないカテゴリー一覧を取得する

      2016/06/28

Pocket

vine-1475412_1280

概要

みなさんこんにちはcandleです。今回はカテゴリー一覧にサブカテゴリーを含まない取得の仕方を紹介します。

サブカテゴリーを使用しているサイトの場合、場合によってはサブカテゴリーとトップの階層のカテゴリーを分けて表示している場合があります。その場合カテゴリー一覧にサブカテゴリーは表示する必要がないのです。

前提

自前のテーマがある

カテゴリー一覧を取得する

例えば、以下のようなカテゴリーとサブカテゴリーがあったとします。
all_category

この時サブカテゴリーは「慶応大学」と「早稲田大学」です。
あとはトップレベルのカテゴリーになっています。

適当なファイルに以下を記述します。
私はwp-content/themes/mydesign/sidebar-category.php
に記述します。

<h3 class="h4">Categories</h3>
<ul class="list-reset">
  <?php
  $parent_category = get_category_by_slug("university");
  $args = array(
    'type'                     => 'post',
    'parent' => 0,
    'orderby'                  => 'name',
    'order'                    => 'ASC',
    'hide_empty'               => FALSE,
    'hierarchical'             => 0,
    'taxonomy'                 => 'category',
  );

  $child_categories = get_categories($args );
  foreach( $child_categories as $category ): ?>
    <li>
      <a href="<?php echo get_category_link( $category->term_id ); ?>">
        <?php echo $category->cat_name; ?>
      </a>
    </li>
  <?php endforeach; ?>
</ul>

試しに、index.phpでこれを読み込んで表示してみます。
index.phpの任意の場所に以下を記述します。

 <?php get_sidebar("category"); ?>

category_iii

これで表示すると、「慶応大学」、「早稲田大学」のサブカテゴリーは表示されずトップレベルのカテゴリーが表示されます。
categories

まとめ

うまくいきましたね。

 - プログラミング ,