期限切れの投稿を表示しない

ワードプレス関数ファイルPHPカスタムフィールド

「有効期限を過ぎたら表示しない」ような処理をしたい場合。

functions.phpに記述

//期限切れの投稿を出力しない
//カスタムフィールド「wanted_end」で制御している、とする
add_action( 'pre_get_posts', 'custom_query_pre_get_posts' );
function custom_query_pre_get_posts( $query ) {
	if ( !is_admin() && $query->is_main_query() ) {
		if( get_post_type() === 'post' || is_home() || is_category() || is_tag() ){
			$query->set( 'meta_query', array(
				array(
					'value'		=> date( 'Ymd' ),
					'key'		=> 'wanted_end',
					'compare'	=> '>=',
				),
			));
		}
	}
}

サブループで処理する場合

//過去のデータを表示しない(サブループ)
<h2>期間中</h2>
<?php
$args = array(
	'post_type'			=> 'wanted',
	'meta_value'		=> date('Ymd'),
	'meta_key'			=> 'wanted_end',
	'meta_compare'		=> '>=',
	'posts_per_page'	=> -1,
);
$wp_query = new WP_Query( $args );
?>
<section>
<?php if( $wp_query->have_posts() ){
	while( $wp_query->have_posts() ){
		$wp_query->the_post();
		the_title();
	}
}else{
	echo '期間中の投稿はありません。';
}
wp_reset_query();
?>
</section>