【WordPress】複数のカスタム投稿タイプの記事を投稿一覧に混ぜて表示する方法

,
【WordPress】複数のカスタム投稿タイプの記事を投稿一覧に混ぜて表示する方法

複数のカスタム投稿タイプの記事をアーカイブとして一覧で表示したい場合、様々な方法があるようですが今回はfunctions.phpに数行記述するだけで完了する簡単な方法をご説明します。

こんな時に便利

例えば、「開発実績」「商品情報」などの情報を「お知らせ」として一覧表示したい場合などに便利です。カテゴリーで分けることも可能ですが、投稿画面を一緒にしたくないなどといったシチュエーションで、複数のカスタム投稿タイプの記事をアーカイブとして表示したい場合があります。

投稿一覧にカスタム投稿タイプの記事を混ぜる

早速投稿一覧にカスタム投稿タイプの記事を混ぜる方法を説明します。
下記はポストタイプ”post”に、ポストタイプ”product”と”works”を混ぜる設定で書いています。適宜カスタム投稿タイプ名に書き換えてください。

functions.php

function pre_get_posts_custom( $query ) {
  if ( is_admin() || !$query->is_main_query() ) { return; }
  if ( $query->is_post_type_archive( 'post' ) && !$query->is_search() ){ 
    $query->set( 'post_type',array( 'post', 'product', 'works' ) );
  }
}
add_action( 'pre_get_posts', 'pre_get_posts_custom' );

functions.phpに上記を記載したら、あとはアーカイブテンプレートでいつも通りのメインループを書きます。

archive.php(一覧表示させたいテンプレート)

<?php if (have_posts()): while (have_posts()) : the_post(); ?>

 //ループの中身を記述

<?php endwhile; else:?>
<p>記事がありません。</p>
<?php endif; ?>

WP_Queryを使うとページネーションがうまくいかない場合があるみたい

はじめはWP_Queryを使って一覧表示する方法を考えていましたが、どうもページネーションが思ったようにならず、functions.phpに記述する方法を選びました。
うまくいかない!という方は一度試してみてください。

この記事をシェアする