Al mirar a través de fragmentos / tutoriales / complementos de WordPress, a menudo veo add_action()
y add_filter()
se coloca antes de que se declare la función:
add_action( 'publish_post', 'email_friends' );
function email_friends( $post_ID ) {
$friends = '[email protected], [email protected]';
mail( $friends, "sally's blog updated" , 'I just put something on my blog: http://blog.example.com' );
return $post_ID;
}
Desde un punto de vista lógico, esto simplemente no tiene sentido para mí. ¿Por qué colocarías la función después de que se llama en tu código? Por lo general, así es como manejaría la misma situación:
function email_friends( $post_ID ) {
$friends = '[email protected], [email protected]';
mail( $friends, "sally's blog updated" , 'I just put something on my blog: http://blog.example.com' );
return $post_ID;
}
add_action( 'publish_post', 'email_friends' );
Sé que ambos escenarios funcionan, pero ¿hay alguna ventaja específica para uno u otro? Alrededor del 90% de las veces veo que se usa el primer escenario, por lo que eso me lleva a creer que hay algún beneficio para esto de alguna manera.
fuente
En realidad, no hay una diferencia real, por ejemplo, prefiero seguir el primer escenario, porque es más conveniente hacer llamadas en un solo lugar y definir funciones debajo de eso. PHP analiza todo el documento antes de ejecutar cualquier cosa, y si las funciones están definidas correctamente, todo funcionará normalmente, sin ventaja en ninguno de los escenarios.
Creo que el dicho correcto aquí es: Lo que sea que haga flotar tu bote :)
fuente
call_user_func_array()
(probablemente) se llama después de la definición de su función cuando se ejecutado_action
. Por lo tanto, puede definir la función enganchada en cualquier lugar hasta ese punto.4 años después, pero estoy seguro de que ayudará a las personas a llegar desde la búsqueda.
Como han dicho otros, no hay diferencia ya que php analiza el documento completo y se ejecuta en el orden correcto. Entonces, lo que quieras.
Personalmente me gusta el primer estilo:
Tiendo a pensar al revés. Orientado a objetivos si quieres. Así que me gusta leer, "estamos haciendo la barra de funciones, en el gancho. Muy bien, ahora, ¿qué hace la función?"
Establece mejor el contexto para la función. Por supuesto, esto es solo mi preferencia personal. Entonces haz lo que quieras.
fuente