Определение правильного запроса WP и мета-запроса

У меня есть список настраиваемых типов сообщений, и я пытаюсь реализовать на нем поисковую форму. Форма поиска просто отправит запросы URL, которые будут перехвачены той же страницей, и в зависимости от этих запросов (таких как name = "..", order = ".." и т. Д.) Список настраиваемых типов сообщений будет представлять эти характеристики.

Я особенно застрял с реализацией аргументов для WP_Query, которые позволят мне искать в метаданных для каждого настраиваемого типа сообщения. Вот структура моей строки $ args (которая вызывается print_r - это не будет отображать точный синтаксис, который я использовал, поскольку он смешан с довольно небольшой логикой, но это дает хорошее представление о том, как интерпретируются мои аргументы):

[post_type] => obituary
[post_per_page] => 25
[meta_query] => Array
    (
        [relation] => OR
        [0] => Array
            (
                [meta_key] => last_name
                [meta_value] => Green
            )

        [1] => Array
            (
                [meta_key] => first_name
                [meta_value] => Green
            )

    )

Если я удалю массив ключей [meta_query] [0] (так что массив, определяющий значение, будет выглядеть как last_name (следовательно, поиск будет выполняться только под одним ключом метаданных), то запрос будет работать нормально. Я подумал о добавлении ключа отношения и значения ИЛИ Чтобы найти meta_value, нужно использовать мета-ключи last_name ИЛИ first_name. Однако, похоже, это не работает, запрос по-прежнему возвращает полный список настраиваемых типов сообщений.

Поскольку я новичок в этом, есть ли что-то вопиющее, что мне не хватает? Я просмотрел документы, которые смог найти, и это, я думаю, должно сработать.

Что ты думаешь?

Изменить: исправление к вышеизложенному: поиск только с одним meta_key будет работать, только если он определен за пределами meta_query.


person Prusprus    schedule 09.11.2011    source источник


Ответы (1)


Догадаться. Правильная структура выглядит следующим образом:

(
    [post_type] => obituary
    [post_per_page] => 25
    [meta_query] => Array
        (
            [relation] => OR
            [0] => Array
                (
                    [key] => last_name
                    [value] => Green
                    [compare] => LIKE
                )

            [1] => Array
                (
                    [mkey] => first_name
                    [value] => Green
                    [compare] => LIKE
                )

        )

)

Основное отличие состоит в том, что meta_key и meta_value называются ключом и значением в массиве meta_query.

person Prusprus    schedule 09.11.2011