Wie erstelle ich ein dynamisches Dropdown-Menü in einer Archiv- / Begriffsseite von Term Meta?

Ich habe eine ‘Hotels’ cpt mit einer benutzerdefinierten nicht-hierarchischen ‘Standorte’ Taxonomie zugeordnet. Jeder Beitrag gehört zu mehreren Begriffen dieser Taxonomie. Das liegt daran, dass jeder Begriff eine andere Art von Ort ist.

Zum Beispiel ist ein Hotel mit dem Begriff ‘innsbruck’ (was eine Stadt ist) und dem Begriff ‘österreichisch-alpen’ (was eine Bergkette ist) verbunden. Manchmal ist ein Beitrag mehreren Begriffen desselben Typs zugeordnet, da ein “Hotel” beispielsweise zu zwei verschiedenen Städten gehören kann. Ja, es klingt merkwürdig, aber es gibt Hotels in der realen Welt, die eigentlich zu mehr als einer Stadt gehören.

Nehmen wir an, wir befinden uns auf der “Innsbruck” -Term Seite, die alle Hotels in Innsbruck auflistet. Auf dieser Seite muss ich ein Dropdown-Menü mit allen Begriffen anzeigen, die mit jedem Beitrag in der Liste verknüpft sind, geordnet nach Begriffstypen.

Um die Art der Terms zu klassifizieren, habe ich Term Meta zu jedem Term hinzugefügt, so dass ‘innsbruck’ einen Term Meta-Schlüssel ‘location-type’ und einen Term Meta-Wert ‘city’ hat. Auf diese Weise kann ich schnell alle Begriffe für jeden Beitrag abfragen, da ich die Post ID kenne.

Meine Frage ist, über welchen Code ich alle Bedingungen erhalten muss, die mit den Posts verbunden sind, die in einer Ausdruck- / Archivseite aufgelistet sind, die durch die Ausdruck-Meta-Werte klassifiziert wird.

Ich habe ein Stück Code für einen einzelnen Beitrag, aber ich verstehe es nicht vollständig, also weiß ich nicht, was ich damit anfangen soll, geschweige denn, wie ich es für eine Term-Page mit einer Liste von Posts anpassen kann:

$locations = get_the_terms( get_post(), 'locations' ); $locations_grouped = []; foreach( $locations as $location ) { $location_type = get_term_meta( $location->term_id, 'location-type', true ); if ( ! $location_type) { $type = 'other'; } if ( ! array_key_exists( $location_type, $locations_grouped ) ) { $locations_grouped[$location_type] = []; } $locations_grouped[$location_type] = $location; } 

Ich habe mehrere foreach () – Schleifen ausprobiert, aber offensichtlich verstehe ich nicht ganz, wie Arrays funktionieren. Ich habe auch einige Nachforschungen für Beispiele und PHP-Handbuch gemacht, aber kein Glück, etwas zu finden, das meinen Bedürfnissen entsprechen könnte.

Meine Vermutung ist, dass ich in einer Term / Archive-Seite eine get_terms-Abfrage nach der Schleife der Seite durchführen müsste, die alle aufgelisteten Posts durchlaufen würde.

Vielen Dank im Voraus für jede Hilfe.

PS – Ich weiß, das klingt wie eine Frage “Mach meinen Code für mich”, aber nein. Es ist eher ein “Hilf mir zu verstehen, was ich tun muss und den Code, den ich hinzugefügt habe”.

Solutions Collecting From Web of "Wie erstelle ich ein dynamisches Dropdown-Menü in einer Archiv- / Begriffsseite von Term Meta?"