Запрашивать сообщения, если мета-ключ начинается с


Мне нужно найти сообщения с мета-ключом, который начинается с текущего года + текущего месяца (т.Е. 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.

Спасибо.

Author: JacobTheDev, 2015-02-16

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"
        )
    ),
));
 1
Author: JacobTheDev, 2015-02-16 16:06:13

Я считаю, что все, что вам нужно сделать здесь, это удалить день из вашего параметра $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

 0
Author: David Gard, 2015-02-16 15:53:14