【WordPress】カテゴリーやタグの一覧を取得して表示する(その2)

前回の記事の続きになります。
↓↓↓前回の記事はこちらから↓↓↓

前回サイトのサイドバーなどでカテゴリーやタグの一覧を取得したい時のやり方を解説しました。
今回はカスタムタクソノミーの一覧を取得するやり方を解説したいと思います。

カスタムタクソノミー

wp_list_categories()

前回のコアカテゴリー、タグに続いて「wp_list_categories()」が使用可能です。あまりカスタマイズ性はないもののこちらは共通して使えるということなので、サイドバーにカテゴリーやタグをリンク付きで羅列するだけならこちらで覚えておけば間違いないです。

<ul>
  <?php wp_list_categories('taxonomy=blog&show_count=1&title_li='); ?>
</ul>

上記のように記述するだけで以下のようなコードが吐き出されます。

<ul>
    <li class="cat-item cat-item-(タームID)"><a href="(タームのリンク先)">ターム名</a> (タームの記事数)</li>
  ・・・
</ul>

引数に入れたパラメータがわかりにくいので連想配列にしてみてみましょう。

<ul>
  <?php  
	  $args = array(
          'taxonomy' => 'blog', // タクソノミーの指定。
          'show_count' => 1, // 各カテゴリーに投稿数を表示するかどうか。初期値は 0で非表示。1で表示。
	      'title_li' => '', // 箇条書きの外側に表示するタイトルと表示形式。空文字を指定すると何も表示しない。
	  );
	  wp_list_categories($args); 
  ?>
</ul>

これで各パラメータの意味がすっきりしました。

get_terms()

また、より細かくカスタマイズしていきたい場合は「get_terms()」が使えます。今回は「wp_list_categories()」で取得できるのと同じ内容を吐き出しています。

<ul>
    <?php
    $terms = get_terms('blog'); // タクソノミーの指定
    foreach ($terms as $term) {
        echo '<li class="cat-item cat-item-' . $term_id . '"><a href="' . get_term_link($term) . '">' . $term->name . '</a> (' . $term->count . ')</li>';
    }
    ?>
</ul>

こちらで先ほどと同じこちらが吐き出されます。echo~の書き方次第で好きなようにカスタム可能です。

<ul>
    <li class="cat-item cat-item-(タームID)"><a href="(タームのリンク先)">ターム名</a> (タームの記事数)</li>
  ・・・
</ul>

実はこの「get_terms()」を使えば前回の記事で解説した、コアカテゴリー(デフォルトのカテゴリー)やタグといった情報のオブジェクトも取得できます。

コアカテゴリーを取得する

<ul>
  <?php
  $categories = get_categories();
  foreach ($categories as $category) {
      echo '<li class="cat-item cat-item-' . $category->term_id . '"><a href="' . get_category_link($category) . '">' . $category->name . '</a> (' . $category->count . ')</li>';
  }
  ?>
</ul>

こちらの記述が「get_terms()」を使って以下のようにあらわすことが可能です。

<ul>
    <?php
    $terms = get_terms('category'); // タクソノミーの指定
    foreach ($terms as $term) {
        echo '<li class="cat-item cat-item-' . $term_id . '"><a href="' . get_term_link($term) . '">' . $term->name . '</a> (' . $term->count . ')</li>';
    }
    ?>
</ul>

またタグに関しても

<ul>
    <?php
    $tags = get_tags();
    foreach ($tags as $tag) {
        echo '<li><a href="' . get_tag_link($tag->term_id) . '">' . $tag->name . '</a></li>';
    }
    ?>
</ul>

同様に「get_terms()」を使って以下のようにあらわすことが可能です。

<ul>
    <?php
    $terms = get_terms('post_tag'); // タクソノミーの指定
    foreach ($terms as $term) {
        echo '<li><a href="' . get_term_link($term) . '">' . $term->name . '</a></li>';
    }
    ?>
</ul>

最後に

このようにコアカテゴリー、ターム、カスタムタクソノミーと様々なやり方があって混乱してしまうかもしれません。
一覧を単純に吐き出すのであれば「wp_list_categories()」が共通で使えますし、より細かくカスタマイズして使いたいというときには、「get_terms()」を使って、それぞれタクソノミーを指定するやり方を覚えてしまうのがよいかもしれません。

コメント

タイトルとURLをコピーしました