【WordPress】投稿記事が1件も無ければテキストを表示する

「現在、お知らせはありません」等、投稿記事が無い場合はテキストを表示しておく方法です。
functions.phpに書く方法とphpに直接書く方法の両方を載せておきます。
ついでに記事のタグをclass名として出力もします。(dtに付けたclass=””の中に表示)

functions.phpに書く場合

ショートコード[topics]で呼び出す。

function getTopics($args = null) {
global $post;
$args = array(
'posts_per_page' => '5',
'post_status' => 'publish',
'order'=>'DESC',
'post_type' => 'post',
);
$retHtml='<dl class="Topics">';
$the_query = new WP_Query( $args );
if($the_query->have_posts()):
while ( $the_query->have_posts() ) : $the_query->the_post();
	$cat = get_the_category();
	$cat = $cat[0];
	$ctm = get_post_meta($post->ID, 'LINK', true);
$retHtml.='<dt>'.get_post_time('Y/m/d').'<span class="'.$cat->category_nicename.'">'.$cat->cat_name.'</span></dt>';
$retHtml.='<dd><a href="'.get_permalink().'">'.the_title("","",false).'</a> ';
$days=14;$today=date('U'); $entry=get_the_time('U');$diff1=date('U',($today - $entry))/86400;
if ($days > $diff1) {
$retHtml.= "<span>New!</span>";}
$retHtml.='</dd>';
endwhile;
else:
$retHtml.='<p>現在、お知らせはありません。</p>';
endif;
$retHtml.='</dl>';
wp_reset_postdata();
return $retHtml;
}
add_shortcode("topics", "getTopics");

テンプレートファイルに直接書く場合

<dl class="Topics">
<?php $the_query = new WP_Query( 'posts_per_page=5&post_type=post&post_status=publish' );
if ( $the_query->have_posts() ) :
while ( $the_query->have_posts() ) : $the_query->the_post();
$cat = get_the_category();
$cat = $cat[0]; ?>
<dt><?php echo get_post_time('Y/m/d'); ?><span class="<?php echo $cat->category_nicename; ?>"><?php echo $cat->cat_name; ?></span></dt>
<dd><a href="<?php the_permalink();?>"><?php the_title(); ?></a></dd>
<?php endwhile;
else: ?>
<p>現在、お知らせはありません。</p>
<?php endif;
wp_reset_postdata(); ?>
</dl>

上記functions版とphp版は別々の抽出条件に対して用意したものなので中身がびみょうに違います適当ですみませんです。

この記事にコメントを残す