「有効期限を過ぎたら表示しない」ような処理をしたい場合。
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>