add_action (), add_filter () antes ou depois da função

14

Ao procurar por trechos / tutoriais / plug-ins do WordPress, muitas vezes vejo add_action() e add_filter() sendo colocados antes da declaração da função:

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;
}

Do ponto de vista lógico isso simplesmente não faz sentido para mim. Por que você colocaria a função depois que ela é chamada no seu código? Geralmente é assim que eu lidaria com a mesma situação:

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' );

Eu sei que ambos os cenários funcionam, mas existe uma vantagem específica para um ou outro? Cerca de 90% das vezes vejo o primeiro cenário sendo usado, o que me leva a acreditar que há algum benefício nisso.

    
por voodooGQ 26.09.2012 / 19:20

3 respostas

11

É mais fácil de ler: Quando é o que é chamado? Se você está depurando um hook você pode ver imediatamente se você tem que ler a função ou não: Se não for o seu hook, você pode pular o código.

Nos meus temas e plugins eu combina todos os registros de ações, filtros e códigos de acesso no topo e eu adiciono o hook ao bloco PHPDoc:

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

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

Não há diferença real, eu prefiro, por exemplo, seguir o primeiro cenário, porque é melhor fazer chamadas em um lugar e definir funções abaixo disso. O PHP analisa o documento inteiro antes de executar qualquer coisa, e se as funções estiverem adequadamente definidas, tudo funcionará normalmente, sem vantagem em nenhum dos cenários.

Eu acredito que o certo aqui é: O que quer que flutue seu barco:)

    
por OriginalEXE 26.09.2012 / 19:28
1

4 anos depois, mas tenho certeza de que isso ajudará as pessoas a chegarem da pesquisa.

Como outros afirmaram, não há diferença, pois o php analisa o documento inteiro e executa na ordem correta. Então, o que você quiser.

Eu pessoalmente gosto do primeiro estilo:

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

Eu costumo pensar para trás. Objetivo orientado se você quiser. Então eu gosto de ler, "estamos fazendo a barra de funções, no gancho. Ok, legal, agora, o que a função faz?"

Configura melhor o contexto para a função. Claro que esta é apenas a minha preferência pessoal. Então faça o que quiser.

    
por John_911 14.10.2016 / 08:52