1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

WPQuery mit mehreren OR Abfragen

Dieses Thema im Forum "Konfiguration" wurde erstellt von DavidK, 20. Juni 2017.

  1. DavidK

    DavidK Member

    Registriert seit:
    13. Juni 2015
    Beiträge:
    10
    Zustimmungen:
    0
    Moin zusammen,

    ich brauche mal bitte eure Hilfe. Nach längerem suchen im Netz bin ich immer noch nicht auf eine Lösung gestoßen. Vielleicht suche ich falsch? Wer weiß ^^

    Es geht um folgendes Problem:

    Ich habe einen Custom-Post-Type "Bilder"

    Jeder Post hat

    a) eine Checkbox die für die Freigabe bzw. Archivierung da ist > also Checkbox aktiviert = "ja" Post gesperrt, deaktiviert = "" Post darf verwendet werden
    b) ein Typ auswahlfeld also z.B. großes Bild, kleines Bild, Testbild
    c) 7 Advanced-Custom-Fields (Textfelder) Farbe1 - Farbe7 die einen Farbcode beinhalten z.B. ff0000

    Per WP-Query möchte ich nun alle Posts von "Bilder" ausgeben, die

    1. Freigegeben sind (a)

    2. vom Typ ein großes Bild sind (b)

    3. den gesuchten String z.B. ff0000 im Custom-Field "Farbe1" haben OR
    den gesuchten String z.B. ff0000 im Custom-Field "Farbe2" haben OR
    den gesuchten String z.B. ff0000 im Custom-Field "Farbe3" haben OR
    den gesuchten String z.B. ff0000 im Custom-Field "Farbe4" haben OR
    etc bis Farbe 7 (c)

    Mein Aktueller Code sieht aktuell so aus:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Jetzt werden mir alle Posts ausgegeben die (a), (b) und Farbe1 kompatibel sind, aber was ich nun nicht weiß, wie frage ich auch alle anderen Farbfelder ab?

    Ich hoffe ihr habt einen Denkanstoß für mich !

    Vielen Dank und viele Grüße
    David
     
  2. DavidK

    DavidK Member

    Registriert seit:
    13. Juni 2015
    Beiträge:
    10
    Zustimmungen:
    0
    Da diese Forumsoftware hier echt Probleme mit Darstellungen hat hier nochmal der Code:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  3. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.634
    Zustimmungen:
    1.778
    Schau Dir mal in der WordPress meta_query Dokumentation die Beispiele an, dort sieht man schön, wie man 'OR' benutzt und ebenso wie eine 'verschachtelte' Abfrage funktioniert.
     
  4. spickzettel

    spickzettel Well-Known Member

    Registriert seit:
    19. Januar 2006
    Beiträge:
    1.848
    Zustimmungen:
    0
    Der Ansatz wäre so (das letzte Array ersetzen durch das folgende):

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  5. DavidK

    DavidK Member

    Registriert seit:
    13. Juni 2015
    Beiträge:
    10
    Zustimmungen:
    0
    Hallo spickzettel,

    vielen Dank für deine Antwort! Diesen Ansatz hatte ich auch schon verfolgt, leider kommt es an am Ende immer zu einer Dauerschleife und der Server crasht worauf ich immer beim Support anrufen muss, damit die Damen und Herren den Server neu starten.

    Das Problem liegt dann wohl an den weiteren Abhängigkeiten denn es müsse ja ebenfalls noch

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    angefügt werden und dann wäre, so wie ich das verstehe die Abfrage

    Wenn
    Farbe1
    oder Farbe2 etc.
    oder aktiv == ja
    oder typ LIKE "127"

    aber es muss so laufen:

    wenn
    Farbe1 und aktiv == ja und typ LIKE "127"
    oder
    Farbe2 und aktiv == ja und typ LIKE "127"
    oder
    Farbe3 und aktiv == ja und typ LIKE "127"
    oder
    Farbe4 und aktiv == ja und typ LIKE "127"
    oder
    Farbe5 und aktiv == ja und typ LIKE "127"
    etc....

    Und hier liegt das Problem diese geschachtelten OR Abfragen bringen den Server immer zum crashen :(

    Hast du eine Idee?
     
  6. DavidK

    DavidK Member

    Registriert seit:
    13. Juni 2015
    Beiträge:
    10
    Zustimmungen:
    0
    Hallo b3317133,

    vielen Dank für deine Antwort! Die Dokumentation habe ich schon seit Tagen immer wieder offen, aber die gezeigten Beispiele sind leider nicht die Lösung zu meinem benötigtem Aufbau :(

    Laut Doku:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    ich brauche aber OR 7 mal und da crasht dann der Server.

    Hast du eine Idee?
     
  7. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.634
    Zustimmungen:
    1.778
    Poste doch mal Deinen kompletten WP_Query Code, wo auch die 'OR' vorkommen.
     
  8. DavidK

    DavidK Member

    Registriert seit:
    13. Juni 2015
    Beiträge:
    10
    Zustimmungen:
    0
    Ok gern

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    So führt der Code zum Crash.
    Siehst du etwas Falsches im Code?
     
  9. danielgoehr

    danielgoehr Well-Known Member

    Registriert seit:
    13. Juli 2016
    Beiträge:
    2.674
    Zustimmungen:
    128
    Wie äussert sich denn dieser Crash? Was ist denn das für ein Server und bei welchem Anbieter?
    Irgendwie irritiert es mich, dass diese (relative simple) Query in WP den Server "crashen" soll.


    Ich persönlich würde den Code etwas zusammenfassen. Du musst ja eigentlich nicht jedes mal die Abfrage nach "typ" und "aktiv" machen. Es reicht ja, das einmal zur Bedingung zu machen und den Rest dann mit AND/OR zu verknüpfen. Also so ungefähr:

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Das ist aber nicht die Ursache des Crashs.

    Was mir in deinem Code noch auffällt:
    Jeweils hinter Farbe verwendest du das falsche Anführungszeichen.
     
  10. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.634
    Zustimmungen:
    1.778
    Bitte den kompletten Code des WP_Query, nicht nur einen Teil der Parameter.

    Die Erfahrung bei der aktuellen "Wissenstiefe" zeigt, dass neben Syntaxfehlern, wie bereits von @danielgoehr angemerkt, oft auch noch weitere Probleme vorhanden sind.
     
  11. DavidK

    DavidK Member

    Registriert seit:
    13. Juni 2015
    Beiträge:
    10
    Zustimmungen:
    0
    Moin danielgoehr,

    danke für deinen Tipp und deinen Hinweis.

    Der Code den ich gepostet habe, ist etwas abgewandelt, da meine custom fields und
    value-variablen längere Namen haben und ich hier aber übersichtlicher schreiben wollte.

    Warum das Anführungszeichen anders ist, kann ich mir nicht erklären ist wahrscheinlich beim Umändern der Variablen-Namen passiert und dann habe ich das durch copy&paste wiederholt falsch eingefügt.

    Deinen Tipp mit der Zusammenfassung übernehme ich sehr gern! Vielleicht war das ja auch schon das Problem, sodass der Server gecrasht ist, da er zu oft die gleichen Dinge abgefragt hat? Ich weiß es aber nicht.

    Zu deiner Frage "Wie äussert sich denn dieser Crash? Was ist denn das für ein Server und bei welchem Anbieter?"

    Sobald ich die Webseite aufrufe geht nichts mehr. Sie lädt und lädt und lädt nach mehreren Minuten immer noch. Dann irgendwann kommt ab und zu ein "Seite kann nicht angezeigt werden".
    Ab und zu steht unten links im Chrome "warte auf Socket".

    Die einzige Lösung ist dann bei All-Inkl (dem Hoster) anzurufen und die zu bitten den Server neu zu starten. Wobei die dort immer von einem Dienstneustart sprechen. Da es einen Unendlich-Loop in der Datenbankabfrage gibt. So meinte es zumindest der Support.

    Mittlerweile ist es schon echt nervig, da nach jeder Änderung die NICHT funktioniert ein erneutes Telefonat stattfinden muss und so ist try & error natürlich nicht wirklich möglich bzw. das große Rätseln angesagt.

     
  12. DavidK

    DavidK Member

    Registriert seit:
    13. Juni 2015
    Beiträge:
    10
    Zustimmungen:
    0
    Moin b3317133,

    der Synthaxfehler war nur ein Versehen beim Umbenennen der Variablen für den Code hier im Forum (Näheres dazu habe ich in der letzen Antwort an danielgoehr beschrieben).

    Hier nochmal der gesamte Code:

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
    #12 DavidK, 21. Juni 2017
    Zuletzt bearbeitet: 21. Juni 2017
  13. DavidK

    DavidK Member

    Registriert seit:
    13. Juni 2015
    Beiträge:
    10
    Zustimmungen:
    0
    danielgoehr ich weiß zwar nicht warum es jetzt geht, aber du bist definitiv mein Held des Tages!

    Vielen DANK!
    :-o
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden