【WordPress】カスタム投稿をタクソノミー別に一覧表示する方法

WordPressでサイトを作成している時に、カスタム投稿を使うことがあります。
その時に、タクソノミー別に投稿を一覧表示する方法をいろいろ調べたので、備忘録として紹介します。

カスタム投稿の作成方法はこちら

WordPressでカスタム投稿の作り方

固定ページを作って、single-slug名.phpを編集しています。


タクソノミー別に一覧表示する

表示したい箇所に以下のコードを記述

<?php
        // タクソノミー取得する
        $catargs = array(
            'taxonomy' => ‘タクソノミー名'
        );
        $catlists = get_categories( $catargs );
        foreach($catlists as $cat) : // 取得したカテゴリの配列を回す
        ?>
        <div class="itemcontainer">
            <h2><?php echo $cat->name; ?></h2>
                <?php
                    $args = array(
                        'numberposts' => -1,//全てのpostを持ってくる
                        'post_type' => 'カスタム投稿名',
                        'orderby' => 'post_date',//日付順
                        'order' => 'ASC',//投稿を古い順に表示
                        'タクソノミー名' => $cat->slug
                    );
                    $my_posts = get_posts( $args );
                    if ( $my_posts ) { // 該当する投稿があったら回す
                        foreach ( $my_posts as $post ) :
                            setup_postdata( $post );
                            ?>
                        <a href="<?php the_permalink(); ?>" class="itembox">
                            <?php the_post_thumbnail(); ?>//サムネ
                            <h3><?php the_title(); ?></h3>//タイトル
                        </a>
                            <?php
                        endforeach;
                    } else {
                        echo 'このカテゴリに投稿はありません';
                    }
                    wp_reset_postdata();
                    ?>
                </div>
            <?php endforeach; ?>
        </div>

何も設定していないと5件しか表示されないので ‘numberposts’ => -1,で投稿を全て表示

また、$argsのarray内で、追加した投稿が下に続くように、 ‘order’ => ‘ASC’,で投稿を古い順に表示しています。
デフォルトでは新しい投稿が上に表示されます。

他にも色々設定できるみたいなので詳しくは公式ページを参考にしてください。

*archive-カスタム投稿名.phpで作った方が良いです。
理由は、下層のページのパンくずのリンクがカスタム投稿名になるからsingle-slug名.phpだとうまくいかないから。
slug名をカスタム投稿名にしても上手くいきませんでした。

以上、カスタム投稿をタクソノミー別に一覧表示する方法でした〜



Posted

in