Qual é a diferença entre ligar diretamente uma function e chamar uma function usando add_action?

Qual a diferença entre seguir dois códigos? (Ligue diretamente uma function e ligue para uma function usando add_action)

function pp_submit__link_form(){ if(isset( $_POST['action']) && $_POST['action']="submit_link" ){ echo "Hello"; } } add_action( 'init', 'pp_submit__link_form' ); 

 function pp_submit__link_form(){ if(isset( $_POST['pp_action']) && $_POST['pp_action']="submit_link" ){ echo "Hello"; } } pp_submit__link_form(); 

Solutions Collecting From Web of "Qual é a diferença entre ligar diretamente uma function e chamar uma function usando add_action?"

No primeiro bloco de código, pp_submit__link_form() será triggersdo na ação de init no WordPress.

No segundo bloco de código, pp_submit__link_form() será acionado imediatamente no momento em que a function é chamada.

No primeiro exemplo, você está registrando a function ‘pp_submit__link_form’ no gancho de ação ‘init’. Então, isso significa que quando o WordPress triggers a ação ‘init’ (chamando do_action (‘init’)), ele includeá sua chamada de function.

Veja o codex do WordPress em ganchos, ações e filtros

No segundo exemplo, você está simplesmente chamando essa function na execução geral do seu script php. Então, ele triggersrá sempre que seu plugin for carregado.

Do seu exemplo, parece que você quer fazer algo com os dados $ _POST (talvez quando alguém publica um formulário), então o primeiro exemplo é o correto para usar.

Outra razão para usar add_action () quando você deseja chamar uma function é o seu oposto, remove_action (), que permite que qualquer plugin / script não ligue para a function quando a ação estiver em execução.

add_action / add_filter, remove_action / remove_filter são os melhores para o desenvolvedor para maximizar a personalização de um plugin, tema e comportamentos essenciais.

Então, em qualquer processo em execução, você poderá remover uma function chamada e logo após adicionar sua própria function usando add_action (). Por exemplo, do seu código:

 remove_action('init', 'pp_submit__link_form'); action_action('init', 'my_pp_submit__link_form); function my_pp_submit__link_form(){ if(isset( $_POST['action']) && $_POST['action']="submit_link" ){ echo "Good bye, see you later, I'm tired"; } } 

1) ao executar diretamente, você não pode acessar quase nenhuma variável global WP importante, porque a consulta / variables ​​são executadas em funções add_action .

2) usando add_action você executa a function sempre que for necessário. Por exemplo, você deseja verificar o usuário conectado, então você deve fazê-lo depois que a ação ‘init’ for iniciada.

3) add_action é a maneira recomendada na maioria dos casos

4) com add_action você faz a function ser “removível” também, se você encontrar algumas condições … ie:

 if($url = 'mypage.php') { remove_action('wp_footer'); } 

5) com add_action você faz sua function ser legível por plugins DEBUGER, para verificar o tempo de execução dessa function, o uso da CPU e etc …