WPで複数種類の投稿をまとめて表示する

2024.10.29 09:00
2024.10.28 17:00
WPで複数種類の投稿をまとめて表示する

通常投稿やカスタム投稿タイプの記事をすべて統合して
一覧で表示したくなったので、やってみました。

まずは、表示用の固定ページをつくります。
「news」でアクセスできるようにするので、slugを「news」として固定ページを「page-news.php」とします。もちろんページネーション対応です。

この場合のデータ取得にはWP_Queryを使います。
get_postsではページネーションが使えないようなので、こちらを使うことになります。
コード的にはこんな感じです。

<?php
get_header();

// 最新情報を取得
$paged = get_query_var('paged', 1); // ページ送り用記述
$args = array(
  'post_type' => array('post','recruit-interviews', 'recruit-requirements', 'recruit-qa'),
  'paged' => $paged // ページ送り用記述
 );
$wp_query = new WP_Query($args);
?>


<?php if($wp_query->have_posts()):?>
  <?php while($wp_query->have_posts()): $wp_query->the_post();?>
    <?php the_time('Y年m月d日');?><br>
    <a href="<?php the_permalink();?>"><?php the_title();?></a>
  <?php endwhile;?>
  // ページネーションの処理(今回は割愛)
<?php else:?>
  投稿がありません。
<?php endif; wp_reset_postdata();?>

注意点としては、get_header();の前にデータを取得しないことです。
以前の記事で書いたのですが、slugがうまく取れなくなります。

参考:WP_Queryを指定すると固定ページのslugが取れなかった

この形で書けば、固定ページでデータを取得しつつ、
ページネーションも正しく取れます。

今回は以上です!