【问题标题】:How to filter posts by date using date range picker in Wordpress?如何使用 Wordpress 中的日期范围选择器按日期过滤帖子?
【发布时间】:2018-10-18 23:28:24
【问题描述】:

我有一个使用日期范围选择器的输入字段。此输入字段是搜索查询的一部分,应该按日期范围、时间和各个日期过滤掉帖子。

我有两个自定义字段,一个允许用户输入个人日期和时间,另一个允许用户选择日期范围和时间范围。

我似乎无法让我的元查询工作,因为当我在输入字段中添加日期范围时,地址栏会将日期格式化为 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');

}

【问题讨论】:

    标签: wordpress date search filtering daterangepicker


    【解决方案1】:

    来自 WP Codex

    value (string|array) - 自定义字段值。只有当 compare 为 'IN'、'NOT IN'、'BETWEEN' 或 'NOT BETWEEN' 时,它才可以是一个数组。

    “类型”日期与“比较”值 BETWEEN 仅在 日期以 YYYY-MM-DD 格式存储并使用此格式进行测试。

    所以,首先修复它

    【讨论】:

    • 抱歉,您能进一步解释一下我应该解决的问题吗?当它在数组中时,我不应该使用“LIKE”吗?还是我的值不会得到我的自定义字段值,除非我把它变成一个数组?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多