カスタム投稿タイプのアーカイブ(一覧)をテーマに組み込む方法を解説いたします。


手順1 カスタム投稿タイプのアーカイブを表示するプログラムをテーマに追加

テーマに archive-カスタム投稿タイプのスラグ.php というファイルを追加します。
カスタム投稿タイプのスラグがnewspost の場合はarchive-newspost.php というファイル名になります。アーカイブを表示する際にワードプレスはこの名称のファイルを自動的に選択し表示の際に実行してくれます。

手順2 アーカイブで記事一覧を表示するコードを作成

早速コードを見ていきましょう。下記のコードはカスタム投稿タイプを30件ずつ1Pに表示し、タイトルと日付を一覧にして表示するコードになります。

<?php get_header(); ?>
<main>
    <ul>
    <?php
    $paged = max(1, get_query_var('paged'));//①
    $args = [
      "post_type" => "カスタム投稿タイプのスラグ",//②
      "posts_per_page" => 30,//③
      "ignore_sticky_posts" => 1,//④
      "paged" => $paged,//⑤
    ];
    $wp_query = new WP_Query($args);
    if (have_posts($wp_query)):
        while (have_posts()):
            the_post();
    ?>
        <li>
            <span class="_date"><?php echo get_the_date("Y年m月d日 ","",""); ?></span>//⑥
            <span class="_title"><a href=""><?php echo mb_strimwidth(get_the_title(),0,100,"..."); ?></a></span>//⑦
        </li>
    <?php
        endwhile; 
    endif;
    ?>
    </ul>

    <ol class="pager">
    <?php
    $total_pages = $wp_query->max_num_pages; //⑧
    if ($total_pages > 1){
        echo paginate_links(array(
            'base' => get_pagenum_link(1) . '%_%',
            'format' => '/page/%#%', //⑨
            'current' => $paged, 
            'total' => $total_pages,
            'prev_text'    => __('« 前へ'),//⑩
            'next_text'    => __('次へ »'),
        ));
    }
    ?>
    </ol>
</main>
<?php get_footer(); ?>

カスタム投稿タイプの記事をリンク付きで次から次に出力

①現在のページを取得し、⑤でページを指定します

②ここに任意のカスタム投稿のスラグを指定します

③1Pに表示する件数を指定します
※この数字は管理画面>表示設定>1ページに表示する最大投稿数 と一致している必要があります。page/2などが404エラーになる場合はこちらをご確認くださいませ

④上部固定投稿を無視します

⑥日付(公開日)を出力します

⑦記事のタイトルを100文字以下に切り詰めその記事単体へのリンクとともに出力します

ページング

⑧全ページ数を取得します

⑨ページリンクのフォーマットを指定します

⑩次のページ前のページのボタン名称を指定します。

参考になりましたら幸いです。

WordPress テーマの修正・カスタマイズのご依頼ご相談はワードプレスドクターまでお気軽にお送りください