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

8

Tengo un tema que incluye alguna configuración, usando after_setup_theme pero me gustaría escribir mis propias funciones que también necesitan ejecutar after_setup_theme . Prefiero guardar mis cosas en un archivo separado. ¿Puedo llamar a after_setup_theme varias veces?

    
pregunta Amanda 10.01.2011 - 22:33

3 respuestas

23

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

Es normal que una acción o un filtro tenga múltiples funciones enlazadas, desde diferentes complementos, o incluso simplemente diferentes funciones en el núcleo de WordPress que hacen algo específico . No solo es posible, sino que incluso es una buena práctica, ya que significa que su código se vuelve más claro (cada función hace solo 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 tanto functionA() como functionB() en el after_setup_theme , pero functionA() debe ejecutarse antes de functionB() , puede enlazar functionA() con la prioridad predeterminada 10 y 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 esa acción se está ejecutando . Por lo tanto, no puede enlazar functionB() a after_setup_theme desde functionA() , llamado en after_setup_theme . Podría llamarlo directamente, pero perdería el beneficio de ganchos separados.

    
respondido por el Jan Fabry 11.01.2011 - 09:03
5

Mi sugerencia sería tener una función "maestra", si así 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 función subsiguientes.

    
respondido por el Aaron Wagner 26.04.2012 - 14:29
4

Sí, puedes agregar tantas acciones al gancho como desees. Solo inténtalo.

    
respondido por el fuxia 11.01.2011 - 01:27

Lea otras preguntas en las etiquetas