Aber wahrscheinlich möchten Sie diese Optionen auf einer anderen Seite (z. B. einer Suchseite, die Sie entwickeln). Nehmen wir an, Sie erstellen eine Seitenvorlage. Was Sie suchen möchten, sind Beiträge mit dem Beitragstyp „Teams“. Der post_type ‘page’ hat also keine benutzerdefinierten Felder namens “team_category” und mit der aktuellen Post-ID wird kein Objekt zurückgegeben.
Was Sie brauchen, ist eine Beitrags-ID eines Beitrags, der das gesuchte Feld tatsächlich enthält. Und das soll dynamisch funktionieren.
Das hat nicht funktioniert, ich denke, es könnte die Abfrage selbst sein, die nicht funktioniert.
– jagmitg
29. Juli 2014 um 10:03 Uhr
Wie hat es nicht funktioniert? Vielleicht könntest du noch ein paar Infos liefern. Im Allgemeinen verwende ich bei der Arbeit mit ACFs nicht die get_field_object() Funktion. Ich benutze normalerweise nur get_field() oder bei einem Repeaterfeld get_sub_field(). Die ACF-Site hat einige großartige Ressourcen. advancedcustomfields.com/resources/getting-started/…
– Dylan Hildenbrand
29. Juli 2014 um 14:36 Uhr
isabisa
Ich weiß, dass dies eine alte Frage ist, wollte aber meine Antwort für andere wegwerfen, die dies möglicherweise finden. Es gibt ein paar Probleme mit Ihrem Code:
Laut dem ACF-Dokumentation für get_field_object()sagen sie: “Unter bestimmten Umständen kann es erforderlich sein, ein Feld anhand seines Schlüssels zu laden, z. B. wenn ein Wert noch nicht gespeichert wurde.” Ich habe festgestellt, dass der Feldname nicht funktioniert, wenn versucht wird, ein Feldobjekt außerhalb einer Schleife abzurufen (was Sie hier tun, indem Sie versuchen, alle Optionen innerhalb eines Felds anzuzeigen, nicht nur die, die sich auf einen bestimmten Beitrag beziehen).
Eine weitere Herausforderung besteht darin, dass der Feldschlüssel je nach Umgebung (lokal, Staging, Produktion usw.) unterschiedlich sein kann, es sei denn, Sie synchronisieren Ihre Datenbanken. Hier ist also eine Funktion, die Ihnen helfen kann, den Feldschlüssel anhand des Feldnamens zu finden, wann immer Sie ihn in einer Funktion wie get_field_object() verwenden müssen:
if (! function_exists('acf_field_from_name')) {
function acf_field_from_name($field, $group)
{
global $wpdb;
return $wpdb->get_var($wpdb->prepare("
SELECT post.post_name as field_name
FROM $wpdb->posts AS post
LEFT JOIN $wpdb->posts AS parent
ON post.post_parent = parent.id
WHERE post.post_excerpt = %s
AND post.post_type="acf-field"
AND parent.post_excerpt = %s
AND parent.post_type="acf-field-group"
", $field, $group));
}
}
Gibt den Feldschlüssel aus Name und Gruppe zurück oder null, wenn keiner vorhanden ist.
Siehe die vollständige Antwort von @Chris darüber, warum der Gruppenname wichtig ist in How to get Advanced Custom Fields field key from WordPress database?
Das zweite Problem besteht darin, dass die Optionen für Auswahl-, Kontrollkästchen- und Optionsfelder als Array innerhalb eines Elements innerhalb des Feldobjekt-Arrays unter dem Schlüssel gespeichert werden choices. Um diese zu erhalten, müssen Sie Folgendes verwenden:
Das dritte Problem ist Ihr für jeden() Funktion ist falsch. Sie müssen das Array übergeben und definieren, wie jeder der Array-Elementschlüssel (in der DB gespeicherter Auswahlwert) und Werte (in der Benutzeroberfläche angezeigte Auswahlbezeichnung) innerhalb der inneren Funktion referenziert wird, wie folgt: