¿Cuántas veces puedo conectarme a la misma acción?

8

Tengo un tema que incluye algo de configuración, after_setup_themepero me gustaría escribir mis propias funciones que también deben ejecutarse after_setup_theme. Prefiero guardar mis cosas en un archivo separado. ¿Puedo llamar after_setup_themevarias veces?

gillespieza
fuente

Respuestas:

27

Los ganchos de WordPress funcionan como Hollywood: no los llamas, te llaman a ti. Pero a diferencia de Hollywood, siguen llamando a todos en la lista.

Es normal que una acción o un filtro tengan múltiples funciones conectadas a él, desde diferentes complementos, o incluso solo diferentes funciones en el núcleo de WordPress que hacen algo específico . No solo es posible, sino incluso una buena práctica, ya que significa que su código se vuelve más claro (cada función solo hace una cosa) y es más fácil deshabilitar una pieza específica de funcionalidad al desengancharla.

Recuerde que también puede jugar con las prioridades de los ganchos: si desea ejecutar ambos functionA()y functionB()en el after_setup_theme, pero functionA()debe ejecutar antes functionB(), puede conectar functionA()con la prioridad predeterminada 10y functionB()con prioridad 20(o cualquier otro número por encima de 10). Lo que no funcionará es conectar otra función a una acción mientras se ejecuta esa acción . Así no se puede enganchar functionB()a after_setup_themepartir functionA(), pidió a after_setup_theme. Podría llamarlo directamente, pero perdería el beneficio de ganchos separados.

Jan Fabry
fuente
7

Mi sugerencia sería tener una función "maestra", si lo desea, que llame a todas sus otras funciones. De esa manera solo tienes que conectarte a esa acción una vez.

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 */}

Esto tiene el beneficio adicional de poder devolver valores que puede usar en llamadas de funciones posteriores.

Aaron Wagner
fuente
4

Sí, puede agregar tantas acciones al gancho como desee. Solo inténtalo.

fuxia
fuente