Quantas vezes posso conectar-me à mesma ação?

8

Eu tenho um tema que inclui alguma configuração, usando, after_setup_thememas eu gostaria de escrever minhas próprias funções que também precisam ser executadas after_setup_theme. Eu preferiria manter minhas coisas em um arquivo separado. Posso ligar after_setup_themevárias vezes?

gillespieza
fonte

Respostas:

27

Os ganchos do WordPress funcionam como Hollywood: você não os chama, eles chamam você. Mas, diferentemente de Hollywood, eles continuam ligando para todos da lista.

É normal que uma ação ou um filtro tenha várias funções conectadas a ela, a partir de plugins diferentes ou até mesmo apenas funções diferentes no núcleo do WordPress que fazem algo específico . Não é apenas possível, mas também 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, desativando-a.

Lembre-se de que você também pode jogar com as prioridades dos ganchos: se você deseja executar os dois functionA()e functionB()no after_setup_theme, mas functionA()deve executar antes functionB(), pode conectar-se functionA()com a prioridade padrão 10e functionB()com a prioridade 20(ou qualquer outro número acima de 10). O que não funcionará é conectar outra função a uma ação enquanto essa ação estiver em execução . Então você não pode se conectar functionB()a after_setup_themepartir de functionA(), chamado after_setup_theme. Você poderia chamá-lo diretamente, mas perderia o benefício de ganchos separados.

Jan Fabry
fonte
7

Minha sugestão seria ter uma função "mestre", se você preferir, que chama todas as suas outras funções. Dessa forma, você só precisa se conectar a essa 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 o benefício adicional de poder retornar valores que você pode usar em chamadas de função subseqüentes.

Aaron Wagner
fonte
4

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

fuxia
fonte