it-swarm.com.de

Was kann ich in after_setup_theme einbinden?

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!

2
Brett

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 ".

Bearbeiten

In re:

Tolle Antwort - danke. Ich verstehe das meiste davon, aber ein bisschen verwirrt, warum alle meine Anrufe an Hooks mit dem add_action und remove_action in Ordnung sind, aber der Anruf an wp_enqueue_scripts nicht? Sie alle feuern nach after_setup_theme. Ich weiß, dass Sie gesagt haben, es liegt daran, dass ich wp_enqueue_scripts nicht vor init 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.

5
Chip Bennett

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

2
Mamaduka

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.

2
Otto