我想你需要检查一下你是否在properties
在操作查询之前输入存档,这样不会影响其他存档。
此外,您需要检查$query
是主查询,因此其他查询不受影响(函数is_main_query()
做不同的事情;不检查实际查询;如果启用调试,您将在日志中收到一条消息,说明您使用is_main_query()
在里面pre_get_posts
操作)。最后,您可能希望排除管理端的查询操作:
function live_properties_only( $query ) {
if ( is_post_type_archive( \'properties\' ) && ! is_admin() && $query->is_main_query() ) {
$today = date(\'Ymd\');
$meta_query = array (
\'meta_query\' => array(
\'key\' => \'date_listing_expires\',
\'compare\' => \'>\',
\'value\' => $today,
),
);
$query->set(\'meta_query\',$meta_query);
}
}
add_action( \'pre_get_posts\', \'live_properties_only\' );
PD:比较元字段中的日期应使用YYYY-MM-DD格式(PHP为Y-m-d
date()
功能);然后可以设置参数
\'type\' => DATE
你将以测试的方式进行日期比较;其他方法也可以,但
WP_Query
尚未使用它们进行测试(显然,元字段值也需要以这种格式存储):
$today = date(\'Y-m-d\');
$meta_query = array (
\'meta_query\' => array(
\'key\' => \'date_listing_expires\',
\'compare\' => \'>\',
\'value\' => $today,
\'type\' => \'DATE\'
),
);