Zunächst weiß ich, dass es sich um ein Duplikat handelt, aber keine der älteren Antworten war hilfreich.
Ich suche in Beiträgen durch post_meta
. Hier ist mein Code, der derzeit nichts zurückgibt.
$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;
Wenn ich es entferne meta_query
, funktioniert es. Ich bin mir dieser Dinge sicher:
- Es gibt keinen Rechtschreibfehler in der
key
oder dervalue
. - Beitragstyp ist
post
- Es gibt einen Beitrag mit dem Wert 'single' in 'system_power_supply'. Post-Felder werden jedoch von erweiterten benutzerdefinierten Feldern generiert .
wp-query
meta-query
Rizwan
quelle
quelle
system_power_supply
serialisiert?a:1:{i:0;s:6:"single";}
Antworten:
Es gibt keine einfache Möglichkeit, serialisierte Werte in einer Metaabfrage zu suchen. Wenn die Werteliste nicht verrückt ist, können Sie möglicherweise mehrere Metaabfragen einrichten:
Oder wenn Sie super schick werden möchten, können Sie es dynamisch einrichten:
quelle
Ich weiß, es ist lange her, aber nur für den Fall, dass jemand das gleiche Problem hat. Nun, ich habe stundenlang an meinen Haaren gezogen, bevor ich das Problem gefunden habe: 'meta_query' mit dem Vergleichsoperator 'IN' scheint das übliche Array nicht zu akzeptieren. Stattdessen müssen Sie zuerst ',' hinzufügen.
In Ihrem Fall sollte also so etwas funktionieren:
quelle
IN()
Teil. ZB'this that', 'and', 'that'
wird'this','that','and','that'
- also scheint es besser zu sein, ihm nur das Array zu geben.