Fragen Sie alle Beiträge ab, in denen kein Metaschlüssel vorhanden ist
-
-
Welche Version von WordPress verwenden Sie?What version of WordPress are you using?
- 0
- 2013-01-12
- s_ha_dum
-
Hallo,entschuldige die Auslassung.Ichbenutze v3.5Hi,sorry for the omission. I am using v3.5
- 0
- 2013-01-12
- JordanBel
-
Es scheint,als ob diese Art von Abfrage (mit dem Vergleich auf NOT EXISTSgesetzt)in 3.5 hinzugefügt wurde,also solltees sofunktionieren,wieesist,soweitich sehen kann.Es wärejedocheinfach,dies übereine benutzerdefinierte SELECT-Abfrage zutun ...It seems as though that type of query (with compare set to NOT EXISTS) was added in 3.5, so it should work as it is, as far as I can see. It would be easy to do it via custom SELECT query, though...
- 0
- 2013-01-12
- Tomas Buteler
-
Danke,ich werde versuchen,select zu verwenden.Ichmuss vorher lernen,welche Tabellen abgefragt werden sollen und wie die Abfrage angepasst werden soll :(Thanks I will try using select. I must learn before which tables to query and how to conform the query though :(
- 0
- 2013-01-12
- JordanBel
-
Sehreigenartig.Ich kann kein Problemmit diesem Codeerkennen und Sie verwenden 3.5+,weshalbichgefragt habe.Haben Sie sich die Datenbanktatsächlich angesehen,um zubestätigen,dass Ihre Daten soeingefügt werden,wie Sieesglauben?Very strange. I can't spot a problem with that code and you are using 3.5+, which is why I asked. Have you actually looked at the database to confirm that your data is being inserted the way you think it is?
- 0
- 2013-01-13
- s_ha_dum
-
Haben Sie 'EXISTS' ausprobiert?Sie haben 'EXIST'erwähnt,aberichglaube,vergleichenur 'EXISTS'mit einem 'S' am Ende.Have you tried 'EXISTS'? You mentioned 'EXIST' but I believe compare only accepts 'EXISTS' with an 'S' on the end.
- 0
- 2013-01-13
- mikegertrudes
-
Hallo danke.Leider hat EXISTS auchnichtfunktioniert.Ich werde zur Abfrageoptiongehen,denkeich.Hi, thanks. Unfortunately EXISTS didn't work either. I will go to the query option I think.
- 0
- 2013-01-14
- JordanBel
-
3 Antworten
- Stimmen
-
- 2013-01-16
Ich habe weitere Tests damit durchgeführt und kannehrlichgesagt keinen Grundfinden,warumesnichtfunktionieren würde (es sei denn,der obige Codeistnurein Ausschnitt und derechte Codepasst zumeinen Beispielen unten). Ich habejedocheinige Dingeentdeckt,die Siein die richtige Richtungführen könnten.
1) Diese Metaabfrageentsprichtfür sichgenommen "Farben IST NULL",d. h. siegibt die Beiträge zurück,für die dieser Schlüsselnichtin der Postmeta-Tabellefestgelegtist. Diesist der obengezeigte Fall,undes hättefunktionieren sollen.
'meta_query' => array( array( 'key' => 'colors', 'compare' => 'NOT EXISTS' // this should work... ), )
2) Vor WordPress 3.9 ändert das Einrichten des 'Relation'-Index zu' OR 'diese Bedingung. Esgibt das Gegenteil zurück. Fragmichnicht warum. Diesistbesonders wichtig,wenn Siemehrere Metaabfragen durchführen. Dasbedeutet,dasses zunächstnichtmöglichist,eine Abfragenach Posts durchzuführen,bei denen der Schlüssel "Farben" auf "Blau" (oder was auchimmer) oder überhauptnichtgesetztist. Diefolgende Abfrageignoriert dieerste Bedingung undgibt nur diejenigen zurück,die der zweiten Bedingungentsprechen.
'meta_query' => array( 'relation' => 'OR', array( 'key' => 'colors', 'compare' => 'NOT EXISTS' // doesn't work ), array( 'key' => 'colors', 'value' => 'blue' ) )
3) Wir können WordPressjedoch dazu verleiten,dieerste Bedingung zu verwenden,wenn wir den 'Wert' setzen. Esbenötigt keinen relevanten Wert (soweitich weiß,wirdesignoriert),aberesmuss gesetzt sein,damit die Bedingung
NOT EXISTS
wirksam wird .'meta_query' => array( 'relation' => 'OR', array( 'key' => 'colors', 'compare' => 'NOT EXISTS', // works! 'value' => '' // This is ignored, but is necessary... ), array( 'key' => 'colors', 'value' => 'blue' ) )
Dies warbis WordPress 3.9 der Fall. Wenn Sienocheine ältere Version verwenden,ist dieseine praktikable Problemumgehung.
I did some more testing with this, and honestly can't find a reason it wouldn't work (unless the code above is just a snippet and the real code fits on my examples below). I did, however, discover a couple of things that might lead you in the right direction.
1) By itself, this meta query is the equivalent of "colors IS NULL", i.e. it'll return the posts which don't have that key set in the postmeta table. This is the case shown above, and it should've worked.
'meta_query' => array( array( 'key' => 'colors', 'compare' => 'NOT EXISTS' // this should work... ), )
2) Prior to WordPress 3.9, establishing the 'relation' index to 'OR' changes this condition. It returns the opposite. Don't ask me why. This is especially important when doing multiple meta queries. That means that is not initially possible to do a query for posts that have 'colors' key set to 'blue' (or whatever) or not set at all. The query below will ignore the first condition and return only those that match the second condition.
'meta_query' => array( 'relation' => 'OR', array( 'key' => 'colors', 'compare' => 'NOT EXISTS' // doesn't work ), array( 'key' => 'colors', 'value' => 'blue' ) )
3) However, we can fool WordPress into using the first condition if we set the 'value'. It doesn't need a relevant value (it's ignored, as far as I know), but it needs to be set in order for the
NOT EXISTS
condition to have any effect.'meta_query' => array( 'relation' => 'OR', array( 'key' => 'colors', 'compare' => 'NOT EXISTS', // works! 'value' => '' // This is ignored, but is necessary... ), array( 'key' => 'colors', 'value' => 'blue' ) )
This was true up until WordPress 3.9. If you're still using an older version, this is a viable workaround.
-
Vielen Dank!Undentschuldigen Sie die Verzögerung.Am Ende habeicheine Abfrage verwendet,aberich werde Ihre Lösungin dennächsten Stundentesten,damitich zurückwechseln kann und wenn diese Arbeitfunktioniert,können wir vielleichteiner anderen helfen.Ich werde Sieinformieren,sobaldiches überprüfen kann.DankenocheinmalThanks! And sorry for the delay. I ended up using a query, but I will be testing your solution in the following hours so I can switch back and maybe if this work we can help some other. I will let you know as soon as I can check it. Thanks again
- 0
- 2013-01-17
- JordanBel
-
Gutgeschrieben undbestätigt,dass das Hinzufügeneines leeren Werts dieerwarteten Ergebnisse liefert.Ich würde sagen,esist unbeabsichtigt. Vielleicht lohntes sich,auftrac.wordpress.orgnachzuschauen,obesbereitsein Ticketgibt. Wennnicht,ist dies reproduzierbar.Well written and confirmed that adding an empty value returns expected results. I'd say it's unintentional, may be worth a look at trac.wordpress.org to see if there's already a ticket, if not, this is reproducible.
- 0
- 2013-03-06
- Taylor Dewey
-
Vielen Dankfür diegroßartige Erklärung und Lösungfür Trick WP :) Ich habeeinige Zeitgebraucht,um hierher zu kommen - aberjetztmöchteichmindestens 10 Mal auf upvote klicken (wennichnur könnte;))Thanks for the great explanation and solution to trick WP :) Did take some time to get here - but now I want to click upvote for at least 10 times (if only I could ;))
- 0
- 2013-03-21
- lorem monkey
-
Wennich compare EXISTS verwende,wird der Wertin neueren Versionen von WP (getestetin 4.2.2) leidernichtignoriert.If I use compare EXISTS, value is unfortunately not ignored in newer versions of WP (tested in 4.2.2)
- 0
- 2015-07-01
- Igor Jerosimić
-
Beachten Sieeinen "orderbymeta_key",dermöglicherweise auchin Ihrer Anfrageenthaltenist!Wordpress wird "WHEREmeta_key=value" auchfüreine Meta-Bestellungfest codieren!Be aware of an `orderby meta_key` that may also be in your query! Wordpress will hardcode `WHERE meta_key = value` for a meta orderby as well!
- 0
- 2016-04-08
- Chizzle
-
Der "Fehler" "EXISTS" und "NOT EXISTS",bei dem Sieeinen Wert angebenmussten,wurdein WP 3.9behobenThe `EXISTS` and `NOT EXISTS` "bug" which required you to specify a value, was fixed in WP 3.9
- 11
- 2016-04-15
- trex005
-
trex005ist richtig: "(Hinweis: Aufgrund des Fehlers Nr. 23268istein Werterforderlich,damit NOT EXISTS-Vergleiche vor 3.9 korrektfunktionieren. Siemüsseneine Zeichenfolgefür den value-Parameter angeben. Eine leere Zeichenfolge oder NULLfunktionierenjedoch NICHTEine andere Zeichenfolgeerledigt den Trick und wirdbei Verwendung von NOT EXISTS NICHTin Ihrem SQL angezeigt. Benötigen Sie Inspiration? Wie wäreesmit 'Bug # 23268'.) "trex005 is right: "(Note: Due to bug #23268, value is required for NOT EXISTS comparisons to work correctly prior to 3.9. You must supply some string for the value parameter. An empty string or NULL will NOT work. However, any other string will do the trick and will NOT show up in your SQL when using NOT EXISTS. Need inspiration? How about 'bug #23268'.)"
- 0
- 2017-04-29
- jave.web
-
- 2015-01-09
Miteinerbenutzerdefinierten Abfrage hat diesbei mirfunktioniert:
SELECT * FROM wp_posts as posts WHERE posts.post_type = 'post' AND NOT EXISTS ( SELECT * FROM `wp_postmeta` WHERE `wp_postmeta`.`meta_key` = "your_meta_key" AND `wp_postmeta`.`post_id`=posts.ID )
Using a custom query, this worked for me:
SELECT * FROM wp_posts as posts WHERE posts.post_type = 'post' AND NOT EXISTS ( SELECT * FROM `wp_postmeta` WHERE `wp_postmeta`.`meta_key` = "your_meta_key" AND `wp_postmeta`.`post_id`=posts.ID )
-
- 2020-01-09
Das hatbei mirfunktioniert.
'meta_query' => array( 'relation' => 'OR', array( 'key' => 'colors', 'compare' => 'NOT EXISTS' // doesn't work ), array( 'key' => 'colors', 'value' => 'blue' ) )
This worked for me.
'meta_query' => array( 'relation' => 'OR', array( 'key' => 'colors', 'compare' => 'NOT EXISTS' // doesn't work ), array( 'key' => 'colors', 'value' => 'blue' ) )
Ich versuche,eine Abfrage zuerhalten,um alle Beiträge abzurufen,bei denenein bestimmter
meta_key
nicht vorhandenist,understelleihn dann.Ich habe Probleme,diese Beiträge zufinden,da die vonmirgetestete Abfragenicht zufunktionieren scheint.
Hierist der Code,mit demich versuche,diese Beiträge zuerhalten:
Diesgibt nichts zurück,wenn keine Beiträgemit den Schlüsselfarben
colors
vorhanden sind,gibt jedoch dieids
der Beiträgemit den Schlüsselfarbencolors
zurück,wenn dies der Fallist Schlüsselist vorhanden (das Gegenteil von dem,wasichbrauche). Ich habees stattdessenmitEXIST
versucht,aber kein Glück.Wennmirjemandeinen Tippgeben kann,wieicheine Abfrage wie die vonmirbenötigteerstellen kann,weißich das zu schätzen.
Danke!