it-swarm.com.de

Wie oft kann ich mich an derselben Aktion beteiligen?

Ich habe ein Thema, das einige Einstellungen enthält, die after_setup_theme verwenden, aber ich möchte meine eigenen Funktionen schreiben, die auch after_setup_theme ausführen müssen. Ich würde es vorziehen, meine Sachen in einer separaten Datei zu speichern. Kann ich after_setup_theme mehrmals anrufen?

8
Amanda

WordPress-Hooks funktionieren wie Hollywood: Sie nennen sie nicht, sie nennen Sie. Aber im Gegensatz zu Hollywood rufen sie weiterhin alle auf der Liste an.

Es ist normal, dass eine Aktion oder ein Filter mehrere Funktionen hat, die von verschiedenen Plugins oder sogar nur von verschiedenen Funktionen im WordPress-Kern abhängen, die alle etwas Bestimmtes tun . Dies ist nicht nur möglich, sondern auch eine gute Übung, da Ihr Code klarer wird (jede Funktion hat nur eine Funktion) und es einfacher ist, eine bestimmte Funktion zu deaktivieren, indem Sie sie aushängen.

Denken Sie daran, dass Sie auch mit den Prioritäten von Hooks spielen können: Wenn Sie sowohl functionA() als auch functionB() im after_setup_theme ausführen möchten, aber functionA() vor functionB() ausgeführt werden muss, können Sie functionA() mit der Standardpriorität 10 und functionB() oder einem anderen 20 ausführen Nummer über 10). Was nicht funktioniert, ist das Verknüpfen einer anderen Funktion mit einer Aktion während diese Aktion ausgeführt wird . Sie können also functionB() nicht mit after_setup_theme von functionA() verknüpfen, der auf after_setup_theme aufgerufen wird. Sie könnten es direkt aufrufen, aber Sie würden den Vorteil separater Hooks verlieren.

25
Jan Fabry

Mein Vorschlag wäre, wenn Sie so wollen, eine "Master" -Funktion zu haben, die alle Ihre anderen Funktionen aufruft. Auf diese Weise müssen Sie sich nur einmal in diese Aktion einklinken.

add_action( 'after_setup_theme', 'master_function' );
function master_function()
{
    func_a();
    func_b();
    func_c();
    func_d();
    func_e();
}
function func_a(){ /* Do something */}
function func_b(){ /* Do something */}
function func_c(){ /* Do something */}
function func_d(){ /* Do something */}
function func_e(){ /* Do something */}

Dies hat den zusätzlichen Vorteil, dass Sie Werte zurückgeben können, die Sie in nachfolgenden Funktionsaufrufen verwenden können.

6
Aaron Wagner

Ja, Sie können dem Hook so viele Aktionen hinzufügen, wie Sie möchten. Probier es einfach.

4
fuxia