O que posso ligar ao after_setup_theme?

2

Eu estou querendo saber o que eu posso ou NÃO devo ligar para after_setup_theme ? Eu estou querendo saber porque me disseram que eu não deveria ligar wp_enqueue_style a ele, mas eu tenho visto outros lugares usando ele para enganchar wp_enqueue_script aqui: enlace

Pelo que entendi, isso é apenas algo que depende do tema, tão confuso sobre o porquê eu não deveria usar wp_enqueue_style nele?

Posso jogar coisas assim também?

add_action('get_header', 'enable_threaded_comments');
add_action('widgets_init', 'unregister_default_wp_widgets', 1);
remove_action('wp_head', 'rsd_link');

Obrigado!

    
por Brett 19.08.2012 / 12:44

3 respostas

5

Pense na execução do WordPress como uma série de degraus em uma escada: o WordPress sobe um degrau, depois o próximo, depois o seguinte e assim por diante.

Pense nos ganchos de ação como os próprios degraus. Aqui está uma lista (ligeiramente abreviada, eu acho) dessas ações, ou "degraus" executados durante uma típica solicitação do WordPress. a>

Assim, uma chamada add_action() é simplesmente uma instrução para executar uma função em uma linha específica na ladder. Contanto que você faça que add_action() chame uma linha anterior à execução em que você deseja que a função especificada seja executada , Não importa, per se que você usou para fazer a chamada add_action() . No entanto, existem razões para usar linhas específicas para executar funções.

Para dar o seu exemplo: o arquivo functions.php de um tema é executado em (acredito) after_setup_theme . Então, você simplesmente não pode usar um Tema para adicionar uma ação a qualquer degrau anterior a after_setup_theme , porque o WordPress já executou essas ações (ou seja, o WordPress já escalou esses degraus na escada ).

Se você tentar executar wp_enqueue_script() em um retorno de chamada conectado a uma ação antes de init , o WordPress gerará um _doing_it_wrong() notice, porque wp_enqueue_script() não deve ser executado antes de init , e mais corretamente deve ser executado em wp_enqueue_scripts (front end) ou admin_enqueue_scripts-{hook} (admin).

No entanto:

  

Posso jogar coisas assim também?

add_action('get_header', 'enable_threaded_comments');
add_action('widgets_init', 'unregister_default_wp_widgets', 1);
remove_action('wp_head', 'rsd_link');

Todos estes são perfeitamente bem chamados em after_setup_theme , uma vez que todas as ações especificadas são ativadas mais tarde que after_setup_theme . Com add_action() , você está simplesmente dizendo ao WordPress, " enfileire este retorno de chamada na ação especificada ." Com remove_action() , você está simplesmente dizendo ao WordPress, " remover este retorno de chamada da ação especificada ."

Editar

Em re:

  

Grande resposta - obrigado. Eu entendo a maior parte, mas um pouco confuso porque todas as minhas chamadas para ganchos com o add_action e remove_action estão ok, mas a chamada para wp_enqueue_scripts não é? Todos eles são acionados após after_setup_theme . Eu sei que você disse que é porque eu não posso executar wp_enqueue_scripts antes de init ; embora sem você me dizer isso, como eu saberia? Por exemplo, como sei se há algo mais que não possa ser executado antes de outra coisa?

Porque add_action() simplesmente coloca em fila um retorno de chamada, dentro de quais funções são realmente executadas. Mas funções como wp_enqueue_script() ou wp_enqueue_style() são, na verdade, funções , que executam onde você as chama.

    
por Chip Bennett 19.08.2012 / 15:07
2

Eu recomendaria verificar como outros temas usam after_setup_theme hook para ter uma ideia geral, verifique as funções. php de temas como Twenty Eleven e Underscores (_s).

after_setup_theme é usado principalmente para carregar arquivos de funcionalidade de temas, registrar suporte a vários recursos como postar miniaturas e postar formatos, carregar arquivos de tradução etc. Você também pode registrar a ação e filtrar a configuração do tema, mas eu gosto de mantê-los perto das funções de retorno de chamada.

A função

wp_enqueue_script() e wp_enqueue_style() deve ser vinculada à ação apropriada - wp_enqueue_scripts

    
por Mamaduka 19.08.2012 / 13:55
2

Você não deve ligar as chamadas de função wp_enqueue_style para isso porque existem outros ganchos de ação que são mais apropriados.

Especificamente, se você precisar enfileirar no front-end do site, você deve conectar-se ao gancho "wp_enqueue_scripts". Se você precisar enfileirar algo no lado do administrador do site, você deve conectar-se ao gancho "admin_enqueue_scripts".

    
por Otto 19.08.2012 / 14:36