Ich muss eine Variable erstellen, auf die in allen meinen WordPress Theme-Vorlagendateien (index.php, header.php usw.) zugegriffen werden kann. Ich weiß, dass Funktionsdefinitionen in der functions.php
Vorlagendatei (in Ihrem Themenpfad) enthalten sind, aber für Variablen gibt es so etwas nicht.
Zum Beispiel muss ich ständig Kategorien in meinem Thema abrufen, daher möchte ich, dass diese von überall in meinem Thema zugänglich sind:
$categories = get_categories(); /* get_categories() is a wordpress function */
Auf diese Weise kann ich einfach auf zugewiesene Daten zugreifen, ohne sie jedes Mal neu zuweisen zu müssen, wenn ich meine Kategorien abrufen muss.
Leider functions.php
funktioniert das Hinzufügen dieses Codes in meiner Datei nicht und das Erstellen der Variablen auch nicht global
.
require()
Aussagen , die in Funktionen eingewickelt werden:get_header()
,get_footer()
, etc; die selbst sind Wrapper um die Funktionget_template_part()
. Da Funktionen in PHP nur Zugriff auf die darin definierten oder als Referenz übergebenen Variablen haben, müssen Sie diese ankündigen, wenn Sie eine Variable aus dem globalen Bereich verwenden möchten (oder eine Variable definieren und im globalen Bereich zugänglich machen möchten) mit dem globalen Schlüsselwort zuerst.Dominic (weiß nicht, wie er seiner Antwort eine Notiz hinzufügen soll):
define akzeptiert nur Skalare, also kannst du es nicht
define( CATS, get_categories() );
und nicht einmalAndernfalls funktioniert define einwandfrei und ist für Skalare sogar sicherer (da Sie sicher sein können, dass die Konstanten nicht überschrieben werden können).
quelle
Ich weiß, dass dieser wirklich alt ist, aber es gibt Raum für Verbesserungen.
Sie sollten in Betracht ziehen, $ GLOBALS ['Kategorien'] anstelle von nur global zu verwenden.
Dafür gibt es zwei Gründe:
global $categories;
jedes Mal schreiben .Betrachten Sie diesen Code:
Nur wenn wir den globalen Status direkt vor der Verwendung der Variablen initialisieren, ist es ziemlich schwer zu sagen, ob er global ist oder nicht. Und vergessen Sie nicht, es in einer Ihrer Vorlagendateien zu wiederholen.
Es ist möglich, dafür Namenskonventionen zu verwenden, aber meiner Meinung nach gibt es einen besseren Weg.
Erwägen Sie die Verwendung
$GLOBALS['categories']
.Wir müssen unsere Variable nur einmal in functions.php initialisieren, ohne
global $categories
erneut darüber nachdenken zu müssen . Und wir können sehen, dass es global ist.print_r ($GLOBALS['categories']);
Leistungsprobleme sind in dieser Situation überhaupt kein Problem. Ich zitiere Sara Golemon ( Link ):
quelle
Dies funktioniert auch:
in functions.php hinzufügen
define('TEST', 'this is a test');
und in Ihrer header.php oder was auch immer
echo TEST;
Gibt es einen Leistungsvorteil bei einer Methode gegenüber einer anderen?
quelle