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

通常投稿やカスタム投稿タイプの記事をすべて統合して
一覧で表示したくなったので、やってみました。
まずは、表示用の固定ページをつくります。
「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が取れなかった
この形で書けば、固定ページでデータを取得しつつ、
ページネーションも正しく取れます。
今回は以上です!