【WordPress】年別記事一覧で「年が明けたら1件も記事が無い」を回避

この記事「カスタム分類を条件に記事一覧を取得し、アーカイブでタブ表示」の続きなのですが、年別記事一覧が出来てやれやれでしたが、年があけたら2017年にあたるトップページに1件も記事がなく、寂しかったので表示する記事が無い時はテキストを表示する事にしました。

例えばこう表示する場合

現在、2017年のお知らせはありません。
2016年の一覧をご覧ください。

20172016はPHPで時間を取得してこなければいけません。
こうします。

$retHtml='現在、'date("Y").'年のお知らせはありません。<br><a href="/'.date('Y', strtotime('-1 year')).'?post_type=info">'.date('Y', strtotime('-1 year')).'年の一覧</a>をご覧ください。';

それを前の記事で書いたものに入れて、条件分岐させます。

function getList() {
 global $post;
 $oldpost = $post;
 $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
 $current_year = date('Y');
 $current_month = date('m');
 $myposts = query_posts(
array(
 'posts_per_page' => '10',
 'post_type' => 'information',
 'paged' => $paged,
 'year' => $current_year,
 'tax_query' => array(
 'relation' => 'AND',
 array(
 'taxonomy' => 'tax_group',
 'terms' => 'cats',
 'field' => 'slug',
 'operator' => 'IN',
))));
if(have_posts()):
$retHtml='';
foreach($myposts as $post) :
setup_postdata($post);

$ctm = get_post_meta($post->ID, 'TEXT', true);
if(empty($ctm)):
$retHtml.='<h3 class="tit_info"><span class="info_date">'.get_post_time('Y/m/d').'</span><a href="'.get_permalink().'">'.the_title("","",false).'</a>';
$retHtml.=do_shortcode('[New]');
$retHtml.='</h3>';
else:
$retHtml.='<h3 class="tit_info"><span class="info_date">'.get_post_time('Y/m/d').'</span> '.the_title("","",false).'';
$retHtml.=do_shortcode('[New]');
$retHtml.='</h3><div class="entry-meta">'.post_custom('TEXT').'</div>';
endif;
endforeach;

//1件も投稿がない時
else:
$retHtml='現在、'date("Y").'年のお知らせはありません。<br><a href="/'.date('Y', strtotime('-1 year')).'?post_type=info">'.date('Y', strtotime('-1 year')).'年の一覧</a>をご覧ください。';
endif;

wp_reset_query();
$post = $oldpost;
return $retHtml;
}
add_shortcode("catList", "getList");

いい感じになるのではないでしょうか。


Comments

コメントを残す