У меня есть поле ввода, в котором используется указатель диапазона дат. Это поле ввода является частью поискового запроса, который должен отфильтровывать сообщения по диапазону дат, времени и отдельным датам.
У меня есть два настраиваемых поля: одно, в которое пользователи могут вводить отдельные даты и время, и одно, которое позволяет пользователям выбирать диапазон дат и временной интервал.
Я не могу заставить свой мета-запрос работать, потому что, когда я добавляю диапазон дат в поле ввода, адресная строка форматирует дату как гггг-мм-дд + - + гггг-мм-дд
и мои настраиваемые поля форматируют дату, чтобы быть
гггг-мм-дд
гггг-мм-дд - гггг-мм-дд
Когда я удаляю «+» в адресной строке, сообщения появляются, но они также не фильтруются должным образом. Он будет отображать сообщение независимо от того, имеет ли он точный формат в качестве диапазона дат, без учета фактического диапазона дат, и я не могу заставить его отображать отдельные даты.
Вот мой код:
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');
}