我有一个名为promotions
的自定义帖子类型。
在每个促销的post meta中,我存储了两个字段,promo_start_date
和promo_end_date
。
其想法是只在前端显示促销信息,
current_date >= promo_start_date AND current_date <= promo_end_date
例如,如果促销在promo_start_date
中的值为2022-12-18
,在promo_end_date
中的值为2023-01-08
,则它将仅显示在2022-12-18
的前端,然后显示到2023-01-08
。
我想知道如何可能用 meta_query实现这一点。
$args = [
'paged' => 1
'post_type' => 'promotions',
'posts_per_page' => 15,
'meta_query' => [
[
'key' => 'promo_start_date',
'value' => gmdate('Y-m-d'),
'type' => 'DATE',
'compare' => '>=',
],
[
'key' => 'promo_end_date',
'value' => gmdate('Y-m-d'),
'type' => 'DATE',
'compare' => '<=',
],
],
];
我可以很容易地在原始sql
中实现这一点,但不幸的是,我正在调整一个插件的过滤器,以达到我需要的结果。
滤波器来自Search and Filter plugin,其文档可在here中找到
这是我正在尝试实现的代码的一个示例
function me_sf_edit_query_args($query_args, $sfid) {
// if search form has specified ID, change query args
if ($sfid == 11000) {
$query_args['meta_query'] = [
[
'key' => 'promo_start_date',
'value' => gmdate('Y-m-d'),
'type' => 'DATE',
'compare' => '>=',
],
[
'key' => 'promo_end_date',
'value' => gmdate('Y-m-d'),
'type' => 'DATE',
'compare' => '<=',
],
];
}
return $query_args;
}
add_filter('sf_edit_query_args', 'me_sf_edit_query_args', 20, 2);
谢谢
1条答案
按热度按时间3xiyfsfu1#