この記事では
WordPressのサブループ内で
記事の投稿タイプを判定して条件分岐する方法
をご紹介します。
サブループを回すときはWP_Queryなどの仕組みを使用します。
そこで複数の投稿タイプの記事を取得する場合に、今回ご紹介する方法が有効です。
WP_Queryについて詳しく知りたい方はこちらの記事をご覧ください。
【結論】WP_Queryなどのサブループ内で投稿タイプを判定する方法
サブループ内で記事の投稿タイプを取得するにはget_post_type()
を使用します。
get_post_type()
は「現在の記事の投稿タイプ」や「引数で指定した記事の投稿タイプ」を取得可能なテンプレートタグです。
サブループ内で使用することにより、「ループ内で出力中の記事の投稿タイプ」も取得することができます。
<?php
$args = [
'post_type' => array( 'foo-type','bar-type' ), // 複数の投稿タイプを指定するときは配列を使用
];
$wq = new WP_Query( $args );
?>
<!-- ループ開始 -->
<?php if ( $wq->have_posts() ) :
while ( $wq->have_posts() ) : $wq->the_post(); ?>
<?php if ( get_post_type() === 'foo-type' ): ?>
// 投稿タイプ「foo-type」の記事ならこの中の処理を実行
<?php elseif ( get_post_type() === 'bar-type' ): ?>
// 投稿タイプ「bar-type」の記事ならこの中の処理を実行
<?php endif: ?>
// ここの処理はすべての記事で実行
<?php endwhile ?>
<?php endif ?>
<!-- ループ終了 -->
<?php wp_reset_postdata(); ?>
このように記述することで、投稿タイプが「foo-type」のときと「bar-type」のときとで処理の内容を条件分岐することが可能です。
あまり多くないケースかもしれませんが、「ページ構成は同じだけど、部分的に出力したい内容が異なる場合」などに重宝します!
まとめ
以上がWordPressのサブループ内で記事の投稿タイプを判定して条件分岐する方法でした。
あまり多いケースではないかもしれませんが、複数の投稿タイプの記事をサブループで出力したいときに、今回ご紹介した方法が役立ちます。
特にページ構成が同じで、部分的に出力内容が異なるようなシチュエーションで重宝しますので、ぜひご活用いただければと思います。
それでは、最後までご覧いただきありがとうございました!
当ブログではWordPressやWeb制作、PHPに関する情報を発信しています。
ご興味のある方はほかの記事もご覧いただけるとうれしいです!
コメント