Estou desenvolvendo plugins para WordPress. Quando ativo meu plug-in, recebo a seguinte mensagem:
O plug-in gerou 293 caracteres de saída inesperada durante a ativação. Se você notar mensagens de "cabeçalho já enviado", problemas com feeds de organização ou outros problemas, tente desativar ou remover este plug-in.
O plug-in está funcionando muito bem, mas não sei por que estou recebendo esta mensagem. Meu plugin é: http://wordpress.org/extend/plugins/facebook-send-like-button/
activate_plugin method
inwordpress/wp-admin/includes/plugin.php
. O conteúdo da variável $ output mostrará os dados carregados na exceção sempre sendo lançados e, em seguida, ofuscados pelo wordpress.Respostas:
Meu palpite é que você recebe um erro de PHP, que gera saída antes do envio dos cabeçalhos. Se você tiver
E_NOTICE
ativado, a chamada$_POST['foo']
poderá gerar um erro "Aviso: variável indefinida" se essa variável não estiver definida.Prática recomendada: nunca assuma nada sobre as variáveis GET, POST, COOKIE e REQUEST. Sempre verifique primeiro usando
isset()
ouempty()
.fonte
Isso geralmente é causado por espaços ou novas linhas antes da
<?php
marca de abertura ou após a?>
marca de fechamento .Confira esta página para ver algumas soluções: Como resolver o problema de aviso dos cabeçalhos já enviados?
ATUALIZAR
Depois de examinar o código do plug-in, a única coisa que notei é que você não tem uma tag PHP de fechamento. Na última linha, adicione
?>
fonte
?>
tag de fechamento . De fato, uma maneira de garantir que isso não causaráHeaders already sent
problemas é deixar de fora a marca de fechamento.?>
.No início da sua função de ativação, coloque um
ob_start();
e, no final, coloque umtrigger_error(ob_get_contents(),E_USER_ERROR);
Em seguida, tente ativar seu plug-in e poderá ver o que realmente são os ' 293 caracteres gerados de saída inesperada '. A partir daí, a depuração será mais fácil (remova os novos caracteres de linha ou resolva alguns erros).
fonte
Eu já enfrentei o mesmo problema antes, para mim era um espaço em branco extra. Depois de remover todos esses espaços em branco, o plug-in pode ser ativado sem nenhum erro / aviso.
fonte
Não tenho certeza de que esse é o problema, mas tenho certeza disso.
Você precisa usar um retorno de chamada válido como o segundo argumento em
register_activation_hook()
:Até onde eu sei, você não definiu em
twl_tablo_olustur()
lugar algum. Isso certamente explicaria a saída inesperada (erro do PHP gerado ao tentar chamar uma função inexistente) e explicaria por que funciona bem em todas as outras circunstâncias.fonte
register_activation_hook(__FILE__,'twl_tablo_olustur');
esse código da versão antiga. Na nova versão (você pode verificar, v1.3), ela é atualizada, mas continua o mesmo erro.Costumo receber essas mensagens muito quando estou enviando mensagens de depuração de plugins / temas, especialmente quando estou produzindo coisas antes que o wp_header seja chamado.
Se você estiver produzindo caracteres, acredito (pode estar errado aqui) que há uma declaração implícita de cabeçalho; portanto, quando a chamada normal de header () ocorre, você recebe o erro, pois não pode ter duas declarações de cabeçalho.
Você pode usar ob_start () para armazenar em buffer a saída, o que deve remover o erro - dê uma olhada nos comentários aqui: http://php.net/manual/en/function.header.php
fonte
Eu sei que esta é uma pergunta antiga e tem uma resposta aceita. Há muitas respostas que cobrem qual poderia ser o problema de ativação . No entanto, nenhuma das respostas realmente chega ao problema principal de COMO depurar problemas com a ativação do plugin.
Se você estiver desenvolvendo plug-ins do WP, também poderá usar as ferramentas corretas para o trabalho. Uma delas é a barra de depuração . Este é um plugin que ajuda a depurar problemas no WP. Se você é desenvolvedor de plug-ins, ele deve estar na sua caixa de ferramentas.
A barra de depuração possui vários complementos - plugins para o plug-in, se você desejar. Uma delas é a ativação do plug-in da barra de depuração , que mostra o erro do PHP gerado quando o plug-in é ativado. Depois de saber qual é o erro do PHP que faz com que os cabeçalhos sejam enviados, você sabe para onde precisa corrigi-lo. Confie em mim, sabendo o que o erro é você pode economizar uma tonelada de tempo em vez de tentar descobrir o que o erro poderia ser .
fonte
Observando a última revisão do plug-in (381724), o problema é Demasiados espaços
toda vez que você deseja criar essa estrutura:
no seu código, use TAB e não espaços.
Aqui está o código em que substituí todos os espaços por tabulações e não recebo nenhuma mensagem na ativação:
fonte
function blabla(){?> <input> <?php code... ?> output something <?php code.. }
então não é esse o caso.?>
, será possível obterheader already send error
esses espaços em branco extras quando o mecanismo php a analisar.Você remove a tag fechar php (?>) Do final de cada arquivo. e também remover todo o espaço em branco após a tag fechar php (?>)
quando você ativar o plugin, basta verificar se a tabela já existe ou não.
eu removi o problema pelo código
fonte
Meu problema foi que o arquivo foi salvo como um arquivo UTF-8. Salvá-lo com a página de código 1252 resolveu o erro.
fonte