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

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

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

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)