Ich frage mich, was kann oder soll ich NICHT an after_setup_theme
anschließen? Ich frage mich, weil mir gesagt wurde, ich solle wp_enqueue_style
nicht einbinden, aber ich habe andere Orte gesehen, die wp_enqueue_script
damit einbinden: http://justintadlock.com/archives/2010/12/30/ WordPress-Theme-Funktionsdateien
Soweit ich weiß, handelt es sich nur um themenabhängiges Material. Sie sind sich also nicht sicher, warum ich wp_enqueue_style
nicht verwenden sollte.
Kann ich so etwas auch reinschmeißen?
add_action('get_header', 'enable_threaded_comments');
add_action('widgets_init', 'unregister_default_wp_widgets', 1);
remove_action('wp_head', 'rsd_link');
Vielen Dank!
Stellen Sie sich die Ausführung von WordPress als eine Reihe von Sprossen auf einer Leiter vor: WordPress klettert eine Sprosse hoch, dann die nächste, dann die nächste und so weiter.
Stellen Sie sich Aktionshaken wie die Sprossen selbst vor. Hier ist eine (meiner Meinung nach leicht abgekürzte) Liste dieser Aktionen oder "Sprossen", die während einer typischen WordPress-Anfrage ausgeführt werden.
Daher ist ein Aufruf von add_action()
einfach eine Anweisung zum Ausführen einer Funktion in einem bestimmten Strompfad auf der Leiter. Solange Sie make dass add_action()
einen Strompfad aufrufen früher als der Lauf, bei dem die angegebene Funktion ausgeführt werden soll ausführen , spielt es keine Rolle, per se mit welchem Strompfad mache den add_action()
Aufruf. Es gibt jedoch Gründe , bestimmte Strompfade zu verwenden, um Funktionen auszuführen .
Um ein Beispiel zu nehmen: Die functions.php
-Datei eines Themas wird unter (glaube ich) after_setup_theme
ausgeführt. Sie können also einfach kein Theme verwenden, um einem Strompfad vor after_setup_theme
eine Aktion hinzuzufügen, da WordPress diese Aktionen bereits ausgeführt hat (d. H. WordPress hat diese "Strompfade" auf der Leiter bereits geklettert).
Wenn Sie versuchen, wp_enqueue_script()
in einem Callback auszuführen, der in eine Aktion eingebunden ist vor init
, generiert WordPress einen _doing_it_wrong()
-Hinweis, da wp_enqueue_script()
nicht vor init
ausgeführt werden sollte und am korrektesten sollte ausgeführt werden sollte entweder am wp_enqueue_scripts
(Frontend) oder am admin_enqueue_scripts-{hook}
(Admin).
Jedoch:
Kann ich so etwas auch reinschmeißen?
add_action('get_header', 'enable_threaded_comments'); add_action('widgets_init', 'unregister_default_wp_widgets', 1); remove_action('wp_head', 'rsd_link');
All dies ist in Ordnung, wenn after_setup_theme
aufgerufen wird, da alle angegebenen Aktionen später als after_setup_theme
ausgelöst werden. Mit add_action()
teilen Sie WordPress einfach mit, " diesen Rückruf bei der angegebenen Aktion einreihen ". Mit remove_action()
teilen Sie WordPress einfach mit: " Diesen Rückruf aus der angegebenen Aktion entfernen ".
In re:
Tolle Antwort - danke. Ich verstehe das meiste davon, aber ein bisschen verwirrt, warum alle meine Anrufe an Hooks mit dem
add_action
undremove_action
in Ordnung sind, aber der Anruf anwp_enqueue_scripts
nicht? Sie alle feuern nachafter_setup_theme
. Ich weiß, dass Sie gesagt haben, es liegt daran, dass ichwp_enqueue_scripts
nicht vorinit
ausführen kann. aber ohne dass du mir sagst, woher soll ich das wissen? Woher weiß ich zum Beispiel, ob es noch etwas gibt, das nicht vor etwas anderem ausgeführt werden kann?.
Weil add_action()
einfach ansteht einen Rückruf, innerhalb dessen Funktionen tatsächlich ausgeführt werden. Aber Funktionen wie wp_enqueue_script()
oder wp_enqueue_style()
sind eigentlich Funktionen , die ausführen , wo immer Sie sie aufrufen.
Ich würde empfehlen, zu prüfen, wie andere Themen after_setup_theme
hook verwenden, um eine allgemeine Vorstellung zu erhalten. Überprüfen Sie functions.php von Themen wie Twenty Eleven und Underscores (_s).
after_setup_theme
wird hauptsächlich zum Laden von Themenfunktionalitätsdateien, zum Registrieren der Unterstützung für verschiedene Funktionen, zum Posten von Miniaturansichten und Postformaten, zum Laden von Übersetzungsdateien usw. verwendet. Sie können auch Aktionen registrieren und nach Themeneinstellungen filtern.
wp_enqueue_script()
und wp_enqueue_style()
sollten in die entsprechende Aktion eingebunden werden - wp_enqueue_scripts
Sie sollten die Funktionsaufrufe von wp_enqueue_style nicht einbinden, da andere Aktions-Hooks vorhanden sind, die geeigneter sind.
Insbesondere, wenn Sie das Enqueue-Verfahren am Front-End der Site ausführen müssen, sollten Sie den Hook "wp_enqueue_scripts" verwenden. Wenn Sie etwas auf der Administratorseite der Site in eine Warteschlange einreihen müssen, sollten Sie den Hook "admin_enqueue_scripts" verwenden.