フリーランス|WEB 制作経験丸7年、制作会社様からのご依頼に丁寧・高クオリティでお手伝いいたします。 IRODORI DESIGN

B L O G

【WordPress】複数の投稿タイプをクエリに指定する方法

WordPress
サブクエリ
複数指定

こんにちは、岐阜・名古屋を拠点に全国各地からご依頼いただくWEBサイトを制作しているフリーランスエンジニアの寺井です。

WordPressのクエリは「ひとつのクエリ」につき「ひとつの投稿タイプ」ではありません。実は複数の投稿タイプをまとめて指定することも出来ます。
この記事ではひとつのクエリに複数の投稿タイプを指定する方法をご紹介したいと思います。

複数の投稿タイプをクエリに指定する方法

WordPressのクエリを複数指定して記事を出力する方法をはこちら。

<?php
$args = array(
    'post_type' => array('post','page'),
    'posts_per_page' => 10,
    'order' => 'DESC',
    'orderby' => 'date',
);
$query = new WP_Query( $args );
if( $query->have_posts() ):
    while( $query->have_posts() ):
        // 投稿内容を表示

    endwhile;
endif;
wp_reset_postdata();
?>

サブループを使い、投稿タイプを指定するpost_typeの部分でarray()を使うことで複数の投稿タイプを指定します。
これだけで指定した複数の投稿タイプの記事を指定した順番通りに出力することが出来ます。

上の例では「投稿(post)」と「固定ページ(page)」を指定していますが、カスタム投稿タイプのスラッグ名を指定することも可能です。

'post_type' => array('カスタム投稿タイプのスラッグ名','カスタム投稿タイプのスラッグ名'),

また、3つ以上を指定することも可能です。

'post_type' => array('post','page','カスタム投稿タイプのスラッグ名'),

サブループで出来るのだから、メインループでも実装したいと思い、アクションフックのpre_get_posts()を使い、メインループでも追加を試しましたがエラーになってしまうようです。
なので投稿タイプを複数まとめて指定する場合は、サブループを使うようにしましょう。

まとめ

いかがでしたか?
サブループを使うことで複数の投稿タイプをまとめて指定することが出来ます。
これを知っているとカスタマイズの幅が広がりますね。