Quantas vezes posso me ligar à mesma ação?

8

Eu tenho um tema que inclui algumas configurações, usando after_setup_theme , mas gostaria de escrever minhas próprias funções, que também precisam executar after_setup_theme . Eu prefiro manter minhas coisas em um arquivo separado. Posso chamar after_setup_theme várias vezes?

    
por Amanda 10.01.2011 / 22:33

3 respostas

23

Ganchos do WordPress funcionam como Hollywood: você não liga para eles, eles ligam para você. Mas ao contrário de Hollywood, eles continuam chamando todos na lista.

É normal que uma ação ou um filtro tenha várias funções ligadas a ele, de diferentes plug-ins ou até mesmo diferentes funciona no núcleo do WordPress que faz algo específico . Não é apenas possível, mas até mesmo uma boa prática, pois significa que seu código fica mais claro (cada função faz apenas uma coisa) e é mais fácil desabilitar uma parte específica da funcionalidade, desencaixando-a.

Lembre-se de que você também pode jogar com as prioridades de ganchos: se você deseja executar functionA() e functionB() no after_setup_theme , mas functionA() deve ser executado antes de functionB() , é possível enganchar functionA() com a prioridade padrão 10 e functionB() com prioridade 20 (ou qualquer outro número acima de 10). O que não funciona é ligar outra função a uma ação enquanto essa ação estiver sendo executada . Portanto, você não pode ligar functionB() a after_setup_theme de functionA() , chamado after_setup_theme . Você poderia ligar diretamente, mas perderia o benefício de ganchos separados.

    
por Jan Fabry 11.01.2011 / 09:03
5

Minha sugestão seria ter uma função "master", se você quiser, que chama todas as suas outras funções. Dessa forma, você só precisa entrar nessa ação uma vez.

add_action( 'after_setup_theme', 'master_function' );
function master_function()
{
    func_a();
    func_b();
    func_c();
    func_d();
    func_e();
}
function func_a(){ /* Do something */}
function func_b(){ /* Do something */}
function func_c(){ /* Do something */}
function func_d(){ /* Do something */}
function func_e(){ /* Do something */}

Isso tem a vantagem de poder retornar valores que você pode usar em chamadas de função subsequentes.

    
por Aaron Wagner 26.04.2012 / 14:29
4

Sim, você pode adicionar quantas ações quiser ao gancho. Apenas tente.

    
por fuxia 11.01.2011 / 01:27