Ich versuche, einen benutzerdefinierten Beitragstyp für ein Galeriesystem abzufragen. Ich habe ein Kontrollkästchen, um eine Galerie als "vorgestellte" Galerie festzulegen (eingerichtet über das Plugin "Weitere Felder"). Wenn dieses Kontrollkästchen aktiviert ist, wird der Metawert 1 und wenn es deaktiviert ist, wird er 0. Alles gut. Wenn das Kontrollkästchen jedoch noch nie aktiviert wurde, wird der Metaschlüssel nie erstellt. Dies bedeutet, dass ich NICHT nach NOT LIKE 1 abfragen kann, da er nicht vorhanden ist.
Die Abfrage, die ich möchte, besteht darin, 4 Galerien herauszuziehen, die in diesem Metawert nicht als '1' markiert sind, aber auch solche, die diesen Wert überhaupt nicht haben. Gibt es eine Möglichkeit, neu hinzugefügten Posts immer einen Standardwert für diesen Metaschlüssel zuzuweisen (dh sie standardmäßig immer auf 0 zu setzen, wenn das Kontrollkästchen nicht aktiviert ist), oder gibt es eine Möglichkeit, den noch nicht festgelegten Schlüssel abzufragen?
Meine aktuelle Anfrage lautet:
$args = array(
'post_type' => 'gallery',
'showposts' => 4,
'meta_key' => 'gal-ID',
'order_by' => 'meta_value',
'order' => 'ASC',
'meta_query' => array( array(
'key' => 'main-gal',
'value' => false,
) ),
) );
Und ich habe verschiedene Versuche mit 'compare' => 'NOT LIKE', '! =' Usw. usw. versucht.
Irgendwelche Ideen? Dieses Ticket scheint zu implizieren, dass es etwas ist, das aussortiert werden sollte:
http://core.trac.wordpress.org/ticket/18158
Vielen Dank!
quelle
Gemäß den benutzerdefinierten Feldparametern im Codex
NOT EXISTS
ist seit WP Version 3.5 ein spezieller Vergleich verfügbarTechnisch erzeugt es so etwas wie die folgende SQL-Abfrage in Posts-Anfragen:
Es funktioniert, indem die Metatabelle mit dem bereitgestellten Schlüssel verknüpft und nur Datensätze ausgewählt werden, bei denen dies nicht zu aussagekräftigen Daten geführt hat (
IS NULL
). Es funktioniert also nur für den Fall, dass der Schlüssel überhaupt nicht vorhanden ist, und nicht für Schlüssel, die mit falschen Werten vorhanden sind.quelle
NOT EXISTS
Vergleich fasziniert mich . Um dieses Problem zu umgehen, speichere ich nur eine 0 amsave_post
Hook, wenn der Metaschlüssel nicht festgelegt ist. Wie funktioniert dasNOT EXISTS
? Sortiert es die Abfrage des OP nachmain-gal
und füllt dann die 4 mit den Posts aus, die dieses Meta nicht haben?Wie das Ticket hervorhob, wird es nicht unterstützt. Bis dahin müssen Sie sich auf eine benutzerdefinierte Lösung verlassen.
Einige Benutzer haben schon früher danach gefragt oder zumindest in den WordPress.org-Foren gefragt, wie es geht. Deshalb habe ich eine Funktion geschrieben, um die Arbeit zu erledigen, die ich nie behalten habe (pastebinned). Zum Glück habe ich das ursprüngliche Thema gefunden wo ich den Pastebin-Link bereitgestellt habe (der nicht ablaufen sollte).
http://pastebin.com/kgLt1RrG
Ich habe das vor 8 Monaten geschrieben und es (seitdem) nicht mehr getestet. Lassen Sie mich also über Probleme wissen.
Ich hoffe, das hilft..
quelle
Die einfachste Methode, wenn auch nicht die sauberste:
Dadurch erhalten Sie alle Ihre Galerien sortiert nach dem Metaschlüssel. Der nächste Schritt besteht darin, herauszufinden, ob die Galerien mit dem Wert 1 nach oder vor den anderen Posts stehen. Auf diese Weise können Sie entweder:
Andere Methoden, für die keine benutzerdefinierte SQL-Anweisung erforderlich ist:
quelle