Прежде всего, я знаю, что это дубликат, но ни один из старых ответов не помог.
Я ищу в сообщениях через post_meta
. Вот мой код, который в настоящее время ничего не возвращает.
$args = array(
'numberposts' => -1,
'post_type' => 'post',
'meta_query' => array(
array(
'key' => 'system_power_supply',
'value' => array('single', 'redundant'),
'compare' => 'IN',
)
)
);
$query = new WP_Query($args);
echo $query->found_posts;
Если я удаляю meta_query
это работает. Я уверен в этих вещах:
- Там нет орфографической ошибки в
key
илиvalue
. - тип сообщения
post
- В system_power_supply есть запись со значением 'single'. Однако поля публикации создаются расширенными настраиваемыми полями .
wp-query
meta-query
Ризван
источник
источник
system_power_supply
сериализовать?a:1:{i:0;s:6:"single";}
Ответы:
Нет простого способа поиска сериализованных значений в мета-запросе. Если список значений не слишком длинный, потенциально вы можете настроить несколько мета-запросов:
Или, если вы хотите получить супер фантазии, вы можете настроить его динамически:
источник
Я знаю, что это было давно, но на тот случай, если у кого-то возникла такая же проблема. Ну, я потянул свои волосы в течение нескольких часов, прежде чем обнаружил проблему: «meta_query» с оператором сравнения «IN», кажется, не принимает обычный массив. вместо этого вам нужно сначала присоединиться к нему с помощью ','.
Итак, в вашем случае, что-то вроде этого должно работать:
источник
IN()
детали. Например,'this that', 'and', 'that'
становится'this','that','and','that'
- так что, кажется, лучше просто дать ему массив.