ど素人から毛を生やす。<延>

カテゴリごとに記事を一覧表示するページ

Web > WordPress > カテゴリー 2014年4月17日(最終更新:3年前)

このページは2014.4.17に作成されています。時代の流れとそぐわない可能性があったり、僕が今以上のど素人だった頃の記事だったりするので、新しい記事を探してみるのも良いかもしれません。

どもです。
先日、原付自転車で横転した餅。です。

打ち身による全身筋肉痛と闘う今日このごろ。

 

さて、今回はWordPress。
ちょっと真面目にPHPと格闘してみました。

今回紹介するのは、当サイトにこっそり追加された「全件リスト」の作り方です。

兎にも角にもまずはソースをどーん!

    <?php

    if ( ! $cat_all = wp_cache_get( 'all_category_all', 'category' ) ) {
        $cat_all = get_terms( 'category', 'fields=all&get=all' );
        wp_cache_add( 'all_category_all', $cat_all, 'category' );
    }

    for($i = 0; $i< count($cat_all); $i++){
    $cat_parent = $cat_all[$i];
    $cat_pname = $cat_parent->name;
    $cat_slug = $cat_parent->slug;
    $cat_id = $cat_parent->term_id;
    $cat_parent = $cat_parent->parent;
    if($cat_parent == 0){ ?>
            <p id="list_<?php echo $cat_slug ?>"><?php echo $cat_pname ?></p>
            <?php $cat_info = get_categories('child_of='.$cat_id);
            foreach ($cat_info as $category) { if($category->count != 0) : ?>
            <ul>
            <p id="list_<?php echo $category->category_nicename; ?>"><?php echo $category->cat_name; ?></p>
            <?php query_posts('posts_per_page=-1&orderby=name&category__in='.$category->term_id);
            if (have_posts()) : while (have_posts()) : the_post();
            ?>
            <li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
            <?php endwhile;wp_reset_query();endif;endif; ?>
            </ul>
            <?php };
        }
    }

    ?>

そして、仕組みもご紹介。

全てのカテゴリ構造を取得して配列に→配列(カテゴリ)の数だけループ→現在のカテゴリ情報を取得→現在のカテゴリに親はないか(最上位カテゴリかどうか)→子孫カテゴリを取り出す→子カテゴリでループ→ループの中身を記載

参考サイト様はこちら
全てのカテゴリ構造を取得するコードを使わせて戴きました。

この記事は役に立ちましたか?
  • _(:3」∠)_ 面白かった  (0)
  • (・∀・) 参考になった (0)
  • (`・ω・´) 役に立った (0)