Wie filtere ich WP_Query-Ergebnisse nach dem benutzerdefinierten Feld eines verwandten Beitrags?

Lesezeit: 2 Minuten

Ich habe zwei Beitragstypen:

  1. Veranstaltungsorte
  2. Bewertungen

Der Venues Post Type enthält die folgenden benutzerdefinierten ACF-Felder:

  • Region
  • Unterregion

Der Beitragstyp „Bewertungen“ enthält ein benutzerdefiniertes ACF-Feld:

  • Veranstaltungsort (das ist Post Object – Select Field)

Ich muss alle Bewertungen anzeigen, deren Veranstaltungsort sich in einer bestimmten Region und/oder Unterregion befindet.

Ist dies etwas, das mit WP_Query erreicht werden kann? Oder muss ich einen schicken Datenbankaufruf machen?

Ich dachte, das würde anfangs funktionieren, aber es scheint, dass Sie das benutzerdefinierte Feld eines Post-Objekts nicht als meta_query abrufen können.

$args = array(
  'post_type' => 'review',
  'posts_per_page' => 18,
  'paged' => $paged,
  'meta_key' => 'venue',
  'meta_query' => array(
     array(
       'key' => 'region',
       'value' => 'napa-valley'
     )
   )
);


  • können Sie diese Feldgruppen exportieren und verknüpfen

    – Sagar Bahadur Tamang

    11. Juni 2019 um 5:13 Uhr

Ich denke, Sie brauchen hier 2 Schleifen, durchlaufen Sie zuerst die Veranstaltungsorte mit der Meta-Abfrage der Region (Sie könnten auch einfach get_posts () oder get_pages () anstelle von WP_Query verwenden), z

'meta_query' => array(
    array(
        'key' => 'region',
        'value' => 'napa-valley'
        )
)

Dann können Sie die IDs der Veranstaltungsorte in bestimmten Regionen in ein Array verschieben

array_push($venue_ids, $post->ID);

Dann können Sie das $venue_ids-Array in Ihrer zweiten Schleife verwenden, die die Überprüfung mithilfe einer Metaabfrage durchlaufen würde, um die Veranstaltungsorte von Ihren ersten Schleifen-IDs mit den auf der Überprüfungsseite ausgewählten Post-Objekt-IDs abzugleichen.

'meta_query' => array(
    array(
        'key' => 'venue',
        'value' => $venue_ids
        )
)

Lassen Sie mich wissen, ob dies hilfreich ist und ob Sie der Meinung sind, dass dies für Sie funktioniert, und ich kann weitere Unterstützung anbieten, wenn ich es nicht richtig erklärt habe oder Sie Hilfe benötigen.

  • Danke Paul, das macht meistens Sinn. Das einzige Problem, das ich habe, ist, dass die meta_query für „venue“ nicht funktioniert. Ich würde annehmen, dass dies daran liegt, dass der „Veranstaltungsort“ ein ACF-Post-Objekt ist, das ein Objekt zurückgibt, anstatt nur eine ID. Gibt es eine Möglichkeit, auf die ID des Post-Objekts zuzugreifen und sie als Schlüssel zu verwenden? (hoffentlich macht das Sinn)

    – John García

    11. Juni 2019 um 17:36 Uhr

  • Ich habe es herausgefunden. Post-Objekte werden als serialisiertes Array gespeichert. Wenn ich mich geändert habe, “array_push($venue_ids, $post->ID);” zu “array_push($venue_ids, serialize(array((string)$post->ID)));” es funktioniert perfekt. Danke für die Hilfe!

    – John García

    11. Juni 2019 um 18:28 Uhr

  • Auch in den ACF-Sustom-Feldeinstellungen können Sie beim Einrichten Ihres Post-Objekts auswählen, ob ein Objekt oder eine ID zurückgegeben wird. Darauf basierte mein Beispiel, und es bereinigt Ihren Code so wenig, wie keine Serialisierung erforderlich ist.

    – Paulus

    12. Juni 2019 um 8:14 Uhr

1136740cookie-checkWie filtere ich WP_Query-Ergebnisse nach dem benutzerdefinierten Feld eines verwandten Beitrags?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy