¿Cuántas veces puedo enganchar a la misma acción en WordPress?

10 ene 2011, 23:33:20
Vistas: 16.4K
Votos: 11

Tengo un tema que incluye cierta configuración usando after_setup_theme, pero me gustaría escribir mis propias funciones que también necesitan ejecutarse con after_setup_theme. Preferiría mantener mi código en un archivo separado. ¿Puedo llamar a after_setup_theme múltiples veces?

0
Todas las respuestas a la pregunta 3
0
34

Los hooks de WordPress funcionan como Hollywood: tú no los llamas, ellos 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 tenga múltiples funciones enganchadas a él, desde diferentes plugins, o incluso solo 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 tu código se vuelve más claro (cada función hace solo una cosa) y es más fácil desactivar una pieza específica de funcionalidad desenganchándola.

Recuerda que también puedes jugar con las prioridades de los hooks: si deseas ejecutar tanto functionA() como functionB() en el after_setup_theme, pero functionA() debe ejecutarse antes que functionB(), puedes enganchar functionA() con la prioridad predeterminada 10 y functionB() con prioridad 20 (o cualquier otro número mayor que 10). Lo que no funcionará es enganchar otra función a una acción mientras esa acción se está ejecutando. Por lo tanto, no puedes enganchar functionB() a after_setup_theme desde functionA(), llamada en after_setup_theme. Podrías llamarla directamente, pero perderías el beneficio de los hooks separados.

11 ene 2011 10:03:40
0

Mi sugerencia sería tener una función "maestra", por así decirlo, que llame a todas tus otras funciones. De esta manera solo necesitas engancharte a esa acción una vez.

add_action( 'after_setup_theme', 'funcion_maestra' );
function funcion_maestra()
{
    funcion_a();
    funcion_b();
    funcion_c();
    funcion_d();
    funcion_e();
}
function funcion_a(){ /* Hacer algo */}
function funcion_b(){ /* Hacer algo */}
function funcion_c(){ /* Hacer algo */}
function funcion_d(){ /* Hacer algo */}
function funcion_e(){ /* Hacer algo */}

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

26 abr 2012 15:29:47
0

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

11 ene 2011 02:27:01