wordpress - 如何使用 Wordpress 中的日期范围选择器按日期过滤帖子?
问题描述
我有一个使用日期范围选择器的输入字段。此输入字段是搜索查询的一部分,它应该按日期范围、时间和单个日期过滤掉帖子。
我有两个自定义字段,一个允许用户输入个人日期和时间,另一个允许用户选择日期范围和时间范围。
我似乎无法让我的元查询工作,因为当我在输入字段中添加日期范围时,地址栏将日期格式化为 yyyy-mm-dd+-+yyyy-mm-dd 并且我的自定义字段格式化日期
yyyy-mm-dd
yyyy-mm-dd - yyyy-mm-dd
当我删除地址栏中的“+”时,帖子似乎出现了,但也没有正确过滤。无论它是否具有与日期范围相同的格式,它都会显示该帖子,而不考虑实际的日期范围,并且我无法让它显示单个日期。
这是我的代码:
if (isset($_GET['lp_s_date']) && !empty($_GET['lp_s_date'])){
function me_search_query( $query ) {
if ( $query->is_search ) {
$meta_query = array(
'post_type' => 'post',
'exact' => true,
'sentence' => true,
'relation' => 'OR',
array(
'key' => 'prefix-mydates',
'value' => ( $_GET['lp_s_date'] ),
'compare' => 'LIKE',
),
array(
'key' => 'prefix-range',
'value' => ( $_GET['lp_s_date'] ),
'type' => 'date',
'compare' => 'BETWEEN',
),
);
$query->set('meta_query', $meta_query);
};
}
add_filter( 'pre_get_posts', 'me_search_query');
第二次尝试:
if (isset($_GET['lp_s_date']) && !empty($_GET['lp_s_date'])){
$start = ($_GET['start']);
$end = ($_GET['end']);
function me_search_query( $query ) {
if ( $query->is_search ) {
$meta_query = array(
'post_type' => 'post',
array(
'key' => 'prefix-range',
'value' => array($start, $end),
'compare' => 'BETWEEN',
'type' => 'DATE',
),
array(
array(
'key' => 'prefix-myDates',
'value' => $start,
'compare' => '>=',
),
array(
'key' => 'prefix-myDates',
'value' => $end,
'compare' => '<=',
),
),
);
$query->set('meta_query', $meta_query);
};
}
add_filter( 'pre_get_posts', 'me_search_query');
}
解决方案
来自 WP Codex
value (string|array) - 自定义字段值。只有当 compare 是 'IN'、'NOT IN'、'BETWEEN' 或 'NOT BETWEEN' 时,它才可以是一个数组。
仅当日期以 YYYY-MM-DD 格式存储并使用此格式测试时,“类型”DATE 才与“比较”值 BETWEEN 一起使用。
所以,首先修复它
推荐阅读
- vue.js - 无法在 nuxt vue 组件中导入引导程序
- encoding - 如何在 App Inventor 2 中将简单字符串转换为 Base64?
- java - 我坚持创建一个循环来一次读取 6 行文件,将每一行保存到一个变量中,以便以后用于计算
- c# - 在 SQLite 上保存有小数问题的对象实例
- python - 两个小数与张量流的乘法
- amazon-web-services - 如何测试命中内部网络负载均衡器
- reactjs - 如何在 github action yml 文件中运行/完成测试条?
- javascript - 如何重置 CSS 动画,使其每次仅使用 Javascript 运行
- java - 使用递归在整数的 ArrayList 中查找最大值
- android - 数据将微调器与枚举的伴随对象中的函数绑定