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

WP 5.6 Advanced Custom Fields / meta_query Problem

Dieses Thema im Forum "Allgemeines" wurde erstellt von lf11, 27. August 2021.

  1. lf11

    lf11 Member

    Registriert seit:
    4. April 2017
    Beiträge:
    14
    Zustimmungen:
    2
    Hallo,

    ich baue für ein Lernprojekt ein Immobilienportal auf, habe einen custom post type "immobilie" und nutze Advanced Custom Fields, um Informationen wie den Kaufpreis der Immobilie abzubilden.

    Wenn ich die WP_Query wie unten abgebildet ausführe und nur die Variablen $cat und §ort befülle, liefert die Query korrekte Ergebnisse. Wenn ich jedoch zusätzlich die Variable $preis_bis befülle mit einem Preis der ÜBER dem Kaufpreis der Immobilie liegt, wird zwar ein Ergebnis angezeigt und wenn ich $preis_bis niedriger eingebe, keines. Soweit so richtig. Wenn ich $preis_bis aber mit "9" befülle, wird die Immobilie ausgegeben. Gebe ich "1" ein -> kein Ergebnis. Die Variablen werden per Formular GET Methode an die Seite übermittelt. Ich habe schon versucht den Kaufpreis in php als (int) zu casten, kein Unterschied.

    Kann dies daran liegen, dass ich in acf das Kaufpreis-Feld erst als "Text einzeilig" angegeben habe und später (nach Eingeben der Immobilien im Backend) das Feld auf "Nummerisch" umgestellt habe?

    Andere mögliche Fehlerquelle: ich habe mehrere Feldgruppen in acf, je nach Kategorie der Immobilie. Diese enthalten das Feld "Kaufpreis" jeweils 1x.
    Ausserdem macht mich derzeit in acf stutzig, dass ich ein Feld mit der exakt selben Feldbezeichnung innerhalb einer Feldgruppe mehrfach anlegen kann, das scheint mir inkonsistent zu sein.
    Bin für jeden Tipp dankbar!

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
    suedtiroler gefällt das.
  2. lf11

    lf11 Member

    Registriert seit:
    4. April 2017
    Beiträge:
    14
    Zustimmungen:
    2
    Eigentlich müsste bei Kaufpreis der compare ">=" sein, hatte daran herumexperimentiert - es funktioniert jedoch so oder so nicht richtig!
     
  3. lf11

    lf11 Member

    Registriert seit:
    4. April 2017
    Beiträge:
    14
    Zustimmungen:
    2
    Oh, es stimmt doch so wie es ist.
     
  4. lf11

    lf11 Member

    Registriert seit:
    4. April 2017
    Beiträge:
    14
    Zustimmungen:
    2
    Ich habe jetzt mal alle Feldgruppen gelöscht und nur "Ort" und "Kaufpreis" neu erstellt. Interessant ist dabei, dass die Feldinformationen für alle Felder in der _postmeta Tabelle erhalten bleiben. Nach Neuanlegen von "Kaufpreis" und Verknüpfen mit cpt Immobilie waren die Kaufpreise noch erhalten. Was ist da los mit ACF. Bug oder Feature?!

    Das Verhalten, dass die Immobilien bei einem Kaufpreis von "9" gefunden werden, hat sich nicht geändert. Diesmal habe ich "Kaufpreis" von vornherein als Nummerisch angelegt.

    Auch mit einem ganz neuen Feld "kaufpreis_neu" werden Immobilien weiter bei einem $preis_bis-Wert von 9 gefunden, bei 1 jedoch nicht. Liegt es doch an meiner Meta-Query?! Ich kann da aber keinen Fehler finden.
     
  5. lf11

    lf11 Member

    Registriert seit:
    4. April 2017
    Beiträge:
    14
    Zustimmungen:
    2
    Bei jedem Wert über 1 werden Immobilien gefunden...
     
  6. danielgoehr

    danielgoehr Well-Known Member

    Registriert seit:
    13. Juli 2016
    Beiträge:
    2.659
    Zustimmungen:
    121
    Ohne den Code selbst debuggen zu können ist es schwierig hier zu helfen. Aber kann es sein, dass du den Kaufpreis als String hinterlegst und deine Meta-Query deshalb nicht Zahlen, sondern Strings vergleicht?
     
    lf11 gefällt das.
  7. lf11

    lf11 Member

    Registriert seit:
    4. April 2017
    Beiträge:
    14
    Zustimmungen:
    2
    Danke für die Antwort. Es kommt mir auch so vor, als würde da etwas als String verglichen.
    Das testweise neue Feld kaufpreis_neu habe ich aber von Anfang an als Nummerisch in ACF angelegt.

    Zudem caste ich den Inhalt der Variablen $preis_bis als (int).
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Keine Strings also.
     
  8. lf11

    lf11 Member

    Registriert seit:
    4. April 2017
    Beiträge:
    14
    Zustimmungen:
    2
    Hier mal mein gesamter Code für die Suchergebnisseite. Ich verwende aktuell nur die Kategorie "Haus kaufen":

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

    mensmaximus Well-Known Member

    Registriert seit:
    24. Juli 2014
    Beiträge:
    8.854
    Zustimmungen:
    430
    suedtiroler und lf11 gefällt das.
  10. lf11

    lf11 Member

    Registriert seit:
    4. April 2017
    Beiträge:
    14
    Zustimmungen:
    2
    Aaaaahhhhh, durch Einfügen von "'type' => 'NUMERIC'" funktioniert es jetzt richtig. Vielen Dank!!!
     
  11. lf11

    lf11 Member

    Registriert seit:
    4. April 2017
    Beiträge:
    14
    Zustimmungen:
    2
    ACF ist doch super, ich nehm alles zurück :) Dass die Infos noch in der DB waren hat sich als hilfreich erwiesen, beim Wiederanlegen der Feldgruppen. Schön wäre noch ein Feature bei ACF, dass es erlaubt die Daten endgültig aus der DB zu löschen, falls man es mal braucht. Danke für die Hilfe hier und schönen Gruß!
     
    suedtiroler gefällt das.
  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