add_action (), add_filter () antes o después de la función

14

Al mirar a través de fragmentos / tutoriales / complementos de WordPress, a menudo veo que se colocan add_action() y add_filter() antes de que se declare la función:

add_action( 'publish_post', 'email_friends' );

function email_friends( $post_ID ) {
   $friends = 'bob@example.org, susie@example.org';
   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ía la función después de que se llame en su código? Por lo general, así es como yo manejaría la misma situación:

function email_friends( $post_ID )  {
   $friends = 'bob@example.org, susie@example.org';
   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 ¿existe una ventaja específica para uno u otro? Aproximadamente el 90% del tiempo veo que se usa el primer escenario, por lo que me hace creer que hay un beneficio para esto de alguna manera.

    
pregunta voodooGQ 26.09.2012 - 19:20

3 respuestas

11

Es más fácil de leer: Cuando se se llama ? Si está depurando un enganche, puede ver inmediatamente si tiene que leer la función o no: si no es su enganche, puede omitir el código.

En mis temas y complementos, combino todos los registros de acciones, filtros y códigos cortos en la parte superior y agrego el enlace al bloque PHPDoc:

add_action( 'wp_head',  'foo' );
add_action( 'shutdown', 'bar' );

/**
 * Foo you!
 *
 * @wp-hook wp_head
 * @return  void
 */
function foo()
{
    print '<!-- foo -->';
}
    
respondido por el fuxia 26.09.2012 - 19:32
6

En realidad no hay una diferencia real, por ejemplo, prefiero seguir el primer escenario, porque es mejor colocar las 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 se definen correctamente, todo funcionará normalmente, sin ninguna ventaja en ninguno de los escenarios.

Creo que el dicho correcto aquí es: Lo que sea que flote tu barco :)

    
respondido por el OriginalEXE 26.09.2012 - 19:28
1

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 una diferencia, ya que php analiza todo el documento y se ejecuta en el orden correcto. Así que lo que quieras.

Personalmente me gusta el primer estilo:

add_action(hook, bar);
function bar(){
    //code here
}

Tiendo a pensar hacia atrás. Objetivo orientado si quieres. Así que me gusta leer, "estamos haciendo barra de funciones, en gancho. Bien, bien, ¿qué hace la función?"

Establece mejor el contexto para la función. Por supuesto, esto es sólo mi preferencia personal. Así que haz lo que quieras.

    
respondido por el John_911 14.10.2016 - 08:52

Lea otras preguntas en las etiquetas