wordpressでカテゴリー一覧を表示する方法2

この記事は公開から1年以上経過しており、内容が古くなっている可能性があります。

ウィジェットを使用せずに、カテゴリ一覧を表示させたい場合は

wp_list_categories()

が一番簡単な方法ですが、自動的にリスト形式で書き出されるため、デザインによっては不便なことがあります。MTのように<MTCategories>~</MTCategories>で囲んだ部分をループさせたりする関数があるといいのですが、残念ながらWordPressでは存在しません(プラグインならあるかもしれませんが)

そこで結局はデータベースから取り出してくる必要があります。
しかしわざわざ、$wpdb->get_resultsを使う必要はありません。

今回はget_terms()を利用します。(参考サイト:とりさんのソフト屋さんサイト)

<?php
    $cat_all = get_terms( “category”, “fields=all&get=all” );
    foreach($cat_all as $value):
 ?>
<p><a href=”<?php echo get_category_link($value->term_id); ?>”><?php echo $value->name;?></a></p>
<?php endforeach; ?>

get_termsで取得されるフィールドは

  • term_id
  • name
  • slug
  • term_group
  • term_taxonomy_id
  • taxonomy
  • description
  • count

となっていますので、foreachでループさせて「$value->term_id」という風に取得してください。

なおURLについては、get_terms()では取得できませんので、

get_category_link(カテゴリID)

で取得してください。(カテゴリIDはforeach中に「$value->term_id」で取得できます。)

なお、自分のやり方ではキャッシュが考慮されていませんので、考慮されたい方はこちらのサイトをご参照ください。とりさんのソフト屋さんサイト

コメント

  1. rina より:

    はじめまして、こちらの記事を参考にカテゴリ一覧を表示することができました。
    ありがとうございます。
    そこで一つご質問させていただきたいのですが、カテゴリ一覧に一緒にカテゴリに属する子ページも表示させるにはどうすればいいかお分かりでしょうか。
    もしお分かりでしたら教えていただけると幸いです。

  2. nandani より:

    rinaさん。
    コメントありがとうございます。
    get_posts(array(‘category’=>カテゴリのID));
    で、そのカテゴリの記事を取得できますので、カテゴリ一覧のループの中にこれを入れ込めば取得できるかと思います。
    データは配列で返ってきますので、print_rでお確かめください。

  3. rina より:

    nandaniさん、お返事ありがとうございます。
    教えていただいたことを取り入れたら、無事表示できました。
    ありがとうございました!!

  4. 私はこの記事を本当に好き。それは非常に興味深いトピックであると著者は本当に賢いと自由闊達な人です。私は別のポストに大きな喜びで、この作家を読んでしたいと思います。

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