【WordPress】条件分岐:特定条件の投稿の有無
はじめに
以下のようなケースで使いました。
同じページ内に、カテゴリ別の複数の投稿リストを出力する。その際、そのカテゴリの記事が無い場合にはブロック自体を非表示にしたい。
〇〇というカテゴリの記事が有る場合のみコレを表示
使用したコード
<?php
$args = array(
'post_type' => array('投稿タイプ名'),
'category_name' => 'カテゴリスラッグ'
);
$hoge = get_posts( $args );
if (count($hoge) > 0):?>
投稿がある場合に表示したい内容
<?php else: ?>
投稿が無い場合に表示したい内容(もしあれば)
<?php endif; ?>
解説
投稿タイプ名
・投稿・・post
・ページ・・page
・カスタム投稿タイプ・・カスタム投稿タイプの名称
etc..
count
↓こちらがcount=数を数えて利用する時に使えるみたい。
(count($hoge)
・・・・・・・・・・
さらに・・
たぶん↓が基本型で、
「$args」の中に任意の条件を入れて、その結果を元にいろんな命令を行えるということだと思います。(これが「WP_Query」というやつなのかな?)
<?php
$args = array(
〇〇 => □□
);
$hoge = get_posts( $args );
「$hoge」を使用して命令を書く
と調べてたら・・
countしなくても以下のように「have_posts」で行けるのかな?
<?php
// 固定ページに特定のカテゴリーを表示
$args = array(
*取得条件*
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) :
?>
<h2>新着情報</h2>
<ul>
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<li><a href="<?php echo get_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?>
</ul>
<?php endif; wp_reset_postdata(); ?>
※上記ソースは以下の記事から引用させていただきました。
以下記事にわかりやすく整理されてありました。
その他参考記事:
関連記事で勉強して、ソースは修正するかもしれません。
ありがとうございました。