wake-up-neo.net

Verwendung von get_terms für die benutzerdefinierte Taxonomie in functions.php

Ich versuche, die Namen von Taxonomie-Elementen abzurufen und sie in ein Themen-Admin-Panel aufzunehmen.

 function retrieve_my_terms () {
 
 global $ terms; 
 
 $ terms = get_terms ('taxonomy'); 
 
 foreach ($ terms as $ term) {
 $ option = $ term-> name; 
 return $ option; 
} 
} 

Die Funktion wird nach den Funktionen hinzugefügt, die den benutzerdefinierten Beitragstyp und die Taxonomie erstellt haben.

Wie ich herausgefunden habe, scheint die Aktion init zu erfolgen, nachdem die Datei functions.php des Themas eingefügt wurde. Wenn ich also direkt in der Funktionsdatei nach Begriffen suche, tue ich dies, bevor sie tatsächlich vorhanden sind registriert worden.

Mit anderen Worten, die Aktion init wird erst ausgelöst, nachdem die Datei mit den Themenfunktionen eingefügt wurde. Daher muss jeder Ausdruck nach init abgerufen werden.

Mein Problem ist, dass ich nicht weiß, wie ich die Begriffe nach dem Init abrufen soll.

Jede Antwort wird sehr geschätzt!

Vielen Dank! Madalin

2
Madalin

Sie können die Aktion auf dem Init selbst hinzufügen. Erhöhen Sie einfach die Priorität des add_action-Aufrufs. Je höher die Priorität, desto später wird die Funktion aufgerufen.

add_action('init', 'retrieve_my_terms', 9999);

Mein Vorschlag ist jedoch, dass Sie diese Art von Dingen so spät wie möglich ausführen, vorzugsweise kurz vor dem ersten Gebrauch. Es gibt eine Aktion 'wp_loaded', die aufgerufen wird, nachdem WordPress vollständig geladen wurde und bereit ist, mit der Arbeit an der Ausgabe zu beginnen. Diese Aktion könnte für Sie arbeiten.

1
Mridul Aggarwal

Es ist wahr, dass functions.php vor init geladen wird - und dass die meisten Beitragstypen mit diesem Hook registriert werden. Aber es gibt später Haken, die Sie verwenden können - und die geeigneter sein werden.

Sie sagen, Sie benötigen Zugriff auf die Bedingungen in functions.php. Aber wann brauchst du sie? init wird bei jedem Seitenaufruf ausgelöst - Vorder- und Rückseite - und ich denke nicht, dass Sie die Begriffe bei jedem Seitenaufruf abrufen möchten. Es stehen Ihnen viele Hooks zur Verfügung, die alle in verschiedenen Kontexten ausgelöst werden. Wenn Sie uns genau mitteilen, was Sie mit den Begriffen tun möchten, die bestimmen, welchen Hook Sie verwenden sollten.

(Ich bin ein bisschen verwirrt von binde sie in ein Theme-Admin-Panel ein ). Es scheint, als würden Sie versuchen, eine Liste in einer Admin-Metabox auszugeben. Können Sie trotzdem Code einfügen?

1
Stephen Harris

Sie können Ihre Funktion im globalen Gültigkeitsbereich von functions.php ohne Probleme definieren.

Es ist mit die Funktion vor der Registrierung, die das Problem ist. Anstatt Dinge in functions.php im globalen Bereich zu tun, tun Sie sie in Hooks. Das einzige, was in functions.php erlaubt sein sollte, sich nicht in einem Hook zu befinden, sind die Aufrufe von add_action.

Also alles in Haken legen, und Ihre Anrufe tätigen in einen Haken/Aktion nach der Registrierung Ihrer Beitragstypen, nicht vorher in losem Code im globalen

0
Tom J Nowell