Запрашивать сообщения, если мета-ключ начинается с
Мне нужно найти сообщения с мета-ключом, который начинается с текущего года + текущего месяца (т.Е. 201502), но фактическое значение может также содержать любой день в течение этого месяца (т. Е. 20150214).
Действительно сложная часть заключается в том, что я пытаюсь сделать это с помощью полей Reapter и выбора даты ACF. Я заставил его работать так, чтобы он мог возвращать значение true, если я запрашиваю сообщения, содержащие полную строку даты (20150214), но я не могу понять, как это сделать только за год и месяц.
Вот мой текущий код:
// custom filter to replace '=' with 'LIKE'
function my_posts_where($where) {
$where = str_replace("meta_key = 'show_times_%_date'", "meta_key LIKE 'show_times_%_date'", $where);
return $where;
}
add_filter("posts_where", "my_posts_where");
// get results
$this_month = date("Ym") . "14"; // this doesn't work if I remove the . "14"
$the_query = new WP_Query(array(
"numberposts" => -1,
"post_type" => "plays_events",
"meta_query" => array(
array(
"key" => "show_times_%_date",
"value" => $this_month,
)
),
));
Меня действительно смущает my_posts_where
, но я просто скопировал и изменил его с этой страницы.
По сути, это опция "значение", которую мне нужно понять, как сказать $this_month . $any_day
.
Спасибо.
2 answers
Я понял это:
$the_query = new WP_Query(array(
"numberposts" => -1,
"post_type" => "plays_events",
"meta_query" => array(
array(
"key" => "show_times_%_date",
"value" => $this_month . "[0-9]{2}",
"compare" => "REGEXP"
)
),
));
Я считаю, что все, что вам нужно сделать здесь, это удалить день из вашего параметра $this_month
и использовать сравнение LIKE
(с завершающим %
) для запроса значения -
$this_month = date("Ym");
$the_query = new WP_Query(array(
"numberposts" => -1,
"post_type" => "plays_events",
"meta_query" => array(
array(
"key" => "show_times_%_date",
"value" => $this_month . "%",
"compare" => "LIKE"
)
),
));
Ознакомьтесь с разделом Параметры настраиваемого поля в справочнике по классу для WP_Query