meta_query 'compare' => 'IN' funktioniert nicht
-
-
ist "system_power_supply" serialisiert?is `system_power_supply` serialized?
- 0
- 2015-04-03
- Howdy_McGee
-
Ja,soistes.Hierist der Wertin der Postmeta-Tabelle `a: 1: {i: 0; s: 6:" single ";}`yes, it is. Here's the value in postmeta table `a:1:{i:0;s:6:"single";}`
- 0
- 2015-04-03
- Rizwan
-
Nun,dasist Ihr Problem. Meta-Abfragenfunktionierennichtmit serialisierten Daten.Wenn Sie auf dieser Websitenach abgefragten serialisierten Daten suchen,finden Sieeinige Antworten,aber keine Methodeistideal.well that's your problem, meta query won't work on serialized data. if you search this site for querying serialized data you'll find some answers, but no method will be ideal.
- 2
- 2015-04-03
- Milo
-
2 Antworten
- Stimmen
-
- 2015-04-03
Esgibt keineeinfache Möglichkeit,serialisierte Wertein einer Metaabfrage zu suchen.Wenn die Wertelistenicht verrücktist,können Siemöglicherweisemehrere Metaabfrageneinrichten:
'meta_query' => array( 'relation' => 'OR', array( 'key' => 'system_power_supply', 'value' => 'single', 'compare' => 'LIKE', ), array( 'key' => 'system_power_supply', 'value' => 'redundant', 'compare' => 'LIKE', ) )
Oder wenn Sie super schick werdenmöchten,können Siees dynamischeinrichten:
$values_to_search = array('single', 'redundant'); $meta_query = array('relation' => 'OR'); foreach ($values_to_search as $value) { $meta_query[] = array( 'key' => 'system_power_supply', 'value' => $value, 'compare' => 'LIKE', ); }
There's no easy way to search serialized values in a meta query. If the list of values isn't crazy long, potentially you could set up multiple meta queries:
'meta_query' => array( 'relation' => 'OR', array( 'key' => 'system_power_supply', 'value' => 'single', 'compare' => 'LIKE', ), array( 'key' => 'system_power_supply', 'value' => 'redundant', 'compare' => 'LIKE', ) )
Or if you wanted to get super fancy, you could set it up dynamically:
$values_to_search = array('single', 'redundant'); $meta_query = array('relation' => 'OR'); foreach ($values_to_search as $value) { $meta_query[] = array( 'key' => 'system_power_supply', 'value' => $value, 'compare' => 'LIKE', ); }
-
Vielen Dank,Bruder.Ich kann dirnicht sagen,wiegroße Kopfschmerzen du vonmirgelöst hast.Thank you so much, bro. I can't tell you how big headache you've solved of mine.
- 0
- 2015-04-03
- Rizwan
-
Übrigens,warum dermeta_value,der serialisierte Datenenthält,wenn wirnichtin der Lage sind,meta_query abzufragen?Ist dasein Fehler von WordPress?btw, why the meta_value containing serialized data if we're not able to query through meta_query ? Is this wordpress's bug?
- 0
- 2015-04-03
- Rizwan
-
Ichbin eine Frau,kein "Bruder",aber kein Problem.Dermeta_valueenthält serialisierte Daten,da Advanced Custom Fields die Daten speichert.Esist sichernichtideal.I'm a woman, not a "bro", but no problem. The meta_value contains serialized data because of the way Advanced Custom Fields saves the data. It's not ideal, for sure.
- 1
- 2015-04-06
- Jen
-
Übrigens,welche Lösung hatbei Ihnenfunktioniert?BTW, which solution worked for you?
- 0
- 2015-04-06
- Jen
-
haha,ichentschuldigemichbei meiner Dame.Zweiter und dritterfunktioniertengut,versuchtennicht denersten.haha, I apologize my lady. Second and third worked well, didn't try the first one.
- 1
- 2015-04-06
- Rizwan
-
Esist ungewöhnlich,eine Programmiererin zu sehen,die überhauptnichtbeißt: D.It's unusual to see a lady programmer, who don't bite at all :D
- 0
- 2015-04-06
- Rizwan
-
Sie können denerstenentfernen,esfunktioniertnichtyou can remove the first one, it doesn't work
- 2
- 2016-03-12
- Toskan
-
- 2017-12-21
Ich weiß,esist lange her,abernurfür den Fall,dassjemand dasgleiche Problem hat.Nun,ich habe stundenlang anmeinen Haarengezogen,bevorich das Problemgefunden habe: 'meta_query'mit dem Vergleichsoperator 'IN' scheint das übliche Arraynicht zu akzeptieren.Stattdessenmüssen Sie zuerst ',' hinzufügen.
In Ihrem Fall sollte also soetwasfunktionieren:
$args = array( 'posts_per_page' => -1, 'post_type' => 'post', 'meta_query' => array( array( 'key' => 'system_power_supply', 'value' => join(', ', array('single', 'redundant')), 'compare' => 'IN', ) ) ); $query = new WP_Query($args); echo $query->found_posts;
I know it's been a long time, but just in case someone has the same issue. Well i've been pulling my hair for hours before i found the issue: 'meta_query' with 'IN' comparison operator doesn't seem to accept the usual array. instead, you need to join it first with ', '.
So, in your case, something like this should work :
$args = array( 'posts_per_page' => -1, 'post_type' => 'post', 'meta_query' => array( array( 'key' => 'system_power_supply', 'value' => join(', ', array('single', 'redundant')), 'compare' => 'IN', ) ) ); $query = new WP_Query($args); echo $query->found_posts;
-
In WP 5 können Sie das Arrayeinfach direkt an den Werteschlüssel übergeben.Wenn Sieesin eine Zeichenfolgeimplodieren,erhalten Siemöglicherweise unerwartete Ergebnisse hinsichtlich der Aufteilung der Zeichenfolge durch wpin Segmentefür den Teil `IN ()`.ZB "das das" und "das" wird "das","das" und "das" - also scheintesbesser zu sein,ihmnur das Array zugeben.In WP 5 you can just pass the array directly to the value key. If you implode it to a string you may get unexpected results in regards to how wp splits the string up into segments for the `IN()` part. Eg, `'this that', 'and', 'that'` becomes `'this','that','and','that'` - so seems to be better to just give it the array.
- 0
- 2019-05-03
- Bananaapple
Zunächsteinmal weißich,dasses sich umein Duplikat handelt,aber keine der älteren Antworten war hilfreich.
Ich suchein Posts über
post_meta code>. Hieristmein Code,der derzeitnichts zurückgibt.
Wennich
meta_query
entferne,funktioniertes. Ichbin mir dieser Dinge sicher:-Taste
oderim-Wert
.post