Po pierwsze wiem, że to duplikat, ale żadna ze starszych odpowiedzi nie była pomocna.
Przeszukuję posty za pośrednictwem post_meta
. Oto mój kod, który obecnie nic nie zwraca.
$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;
Jeśli usunę meta_query
to działa. Jestem pewien tych rzeczy:
- Nie ma pomyłki w pisowni w
key
lubvalue
. - typ postu to
post
- W „system_power_supply” jest post o wartości „single”. Jednak pola wpisów są generowane przez zaawansowane pola niestandardowe .
wp-query
meta-query
Rizwan
źródło
źródło
system_power_supply
serializowany?a:1:{i:0;s:6:"single";}
Odpowiedzi:
Nie ma łatwego sposobu wyszukiwania serializowanych wartości w meta zapytaniu. Jeśli lista wartości nie jest zwariowana, potencjalnie możesz skonfigurować wiele meta-zapytań:
Lub jeśli chcesz być bardzo fantazyjny, możesz ustawić go dynamicznie:
źródło
Wiem, że minęło dużo czasu, ale na wypadek, gdyby ktoś miał ten sam problem. Cóż, ciągnęłam włosy przez wiele godzin, zanim znalazłam problem: „meta_query” z operatorem porównania „IN” nie akceptuje zwykłej tablicy. zamiast tego musisz najpierw dołączyć do niego za pomocą „,”.
W twoim przypadku coś takiego powinno działać:
źródło
IN()
części. Np.'this that', 'and', 'that'
Staje się'this','that','and','that'
- wydaje się, że lepiej jest po prostu dać mu tablicę.