Estou configurando um tema infantil para alguns dos membros do meu corpo docente e, como parte do tema, gostaria que um punhado de plug-ins fosse ativado no momento em que o tema fosse ativado. Então, naturalmente, usei a ação after_setup_theme e chamei minha função de configuração. Funciona muito bem, exceto que é executado em TODAS as solicitações (admin e outras). Eu provei isso adicionando isso ao final da função de instalação:
echo '<script type="text/javascript">alert("This action was run")</script>';
E, como resultado, receba um alerta javascript em todas as solicitações de administrador e solicitações de front-end (eu tenho uma configuração de rede, portanto, obviamente, em sites onde esse tema não está ativo, não está executando a função)
Então a questão é: isso é um bug? De alguma forma, estou fazendo algo errado? Aqui está o código completo que estou usando:
add_action( 'after_setup_theme', 'fwp_setup' );
function fwp_setup(){
// -- Unrelated code remove for the sake of brevity
require_once($_SERVER['DOCUMENT_ROOT'].'/wp-admin/includes/plugin.php');
activate_plugin('enable-media-replace/enable-media-replace.php');
activate_plugin('seo-image/seo-friendly-images.php');
activate_plugin('w3-total-cache/w3-total-cache.php');
echo '<script type="text/javascript">alert("This action was run")</script>';
}
Qualquer visão seria muito apreciada!
fonte
after_switch_theme
faz exatamente o que pretendi aqui. É acionado depois que o tema é alternado para o seu tema. Uma das soluções mencionadas abaixo é usadaswitch_theme
. Isso não tem os resultados desejados, pois só acontece após a mudança do tema. Faça referência ao comentário do TracRespostas:
SOLUÇÃO:
after_switch_theme
faz exatamente o que pretendi aqui. É acionado depois que o tema é alternado para o seu tema. Uma das soluções mencionadas abaixo é usadaswitch_theme
. Isso não tem os resultados desejados, pois só acontece após a mudança do tema.Aqui está um artigo que eu achei como referência: http://core.trac.wordpress.org/ticket/7795#comment:29
Aqui está o meu código modificado
fonte
A
after_setup_theme
ação visa disparar em cada carregamento do WordPress. É simplesmente parte do processo durante o qual o WordPress chama o sistema de modelos, determina os vários parâmetros de configuração do Tema e prossegue com o processamento subsequente, como determinar o modelo correto a ser exibido etc.Em outras palavras,
after_setup_theme
representa o ponto em que o WordPress configura o Tema atual, não o ponto em que o administrador ativa e / ou configura o Tema atual.O que você está procurando é um gancho de ativação de Tema , que atualmente não está disponível, mas está em consideração / desenvolvimento .
fonte
init !== activation
. Normalmente você chama__construct()
função no php também umainit
função. Isso significa: Inicialize a instância.Infelizmente, não há gancho de ativação de tema. No entanto, essa pergunta fornece uma solução alternativa para isso.
Basta usar o 'gancho de ativação do tema' para ativar os plug-ins.
Uma solução melhor, na mesma linha, é essa . Ambos usam essencialmente o
switch_theme
gancho.De acordo com os comentários do OP e o ticket trac vinculado -
after_switch_theme
é o gancho necessário.Isso passa o nome do tema antigo como argumento. No entanto, se isso estiver no seu
functions.php
(que deveria ser ...), o retorno de chamada será acionado apenas quando o seu tema estiver sendo ativado .Da mesma forma, adicione um retorno de chamada para
switch_theme
somente será chamado quando seu tema for desativado.fonte
switch_theme
só funcionou após a desativação do tema. No entanto,after_switch_theme
funcionou perfeitamente.Uma solução melhor pode ser usar o script de ativação do plugin de Thomas Griffin . Isso solicitará que os usuários instalem plug-ins de sua escolha quando o tema estiver em uso. Eu acho que essa é uma ótima maneira de separar o plug-in do tema e ainda obter o uso dele.
Dentro do seu tema, verifique se o plug-in está ativo antes de usar suas funções. Isso permitirá aos usuários mais opções e controle.
Você pode configurar o script de ativação facilmente com o Knapsack .
fonte
Sua melhor solução agora seria usar
switch_theme
hook e filtrar o argumento '$ theme' passado para ver se é o atual deles e se não retornar;fonte