Я использую плагин Get Posts для отображения сообщений с типом сообщения «проект». Я хочу отфильтровать список по двум настраиваемым полям: год (например, 2006) и состояние (например, завершено). Я добавил meta_query
к get_post
аргументам плагина и попробовал шорткод:
[get_posts post_type="project" meta_query="array(array('key' => 'state', 'value' =>
'Completed'),array('key' => 'year','value' => '2006'))" suppress_filters="false"]
Это не работает, хотя я могу заставить работать как «штат», так и «год» самостоятельно, используя meta_key
и meta_value
.
Может ли кто-нибудь поставить меня в правильном направлении?
Помимо того, что плагин не обновляется, это не сработает, потому что аргумент meta_query оценивается как строка:
Я предлагаю вам создать собственный шаблон страницы, в котором вы будете напрямую вызывать get_posts() с нужным мета_запросом.
Вам нужно будет скопировать код, который обрабатывает фактический список сообщений.
Спасибо. Я перешел к шаблонному решению. Я сейчас борюсь с этим здесь: wordpress.stackexchange.com/questions/15114/…
Спасибо. Итак, если
get_posts()
не поддерживаетmeta_query
, мне понадобится какой -то плагинWP_Query()
илиquery_posts()
плагин для шорткода? Будут ли они вести себя как шорткод на странице, то есть не в шаблоне? Я задаю правильные вопросы? В конце концов, как правильно получить отфильтрованный список по двум пользовательским полям?get_posts() — это всего лишь оболочка для WP_Query, поэтому meta_query работает, как и любой другой аргумент, который может обрабатывать WP_Query.
Вторая часть о
get_posts()
непринятииmeta_query
неверна, но первая часть о фильтрации атрибутов черезshortcode_atts()
. Я изменил этот ответ, чтобы отразить это, но я оставляю на усмотрение @John полное редактирование.Да, моя ошибка. Я ошибся в том, как
wp_parse_args()
работает.Я не думаю, что плагин был обновлен для поддержки новых аргументов запроса или, в частности, в этом случае,
meta_query
arg.На странице плагина указана совместимость до версии 3.0.5, и, если я правильно помню,
meta_query
она была представлена в версии 3.1, поэтому, естественно, я бы сделал вывод, что поддержка пока недоступна.Могу ошибаться, просто соединяю точки..
Плагин использует
shortcode_atts
для ограничения списка принимаемых аргументов:http://plugins.trac.wordpress.org/browser/nurelm-get-posts/tags/0.3/get-posts.php#L29
meta_query
нет в этом списке. Я бы предложил разветвить плагин или попросить автора обновить его, чтобы разрешить мета-запросы.