Como resolver um conflito de plugin do WordPress?

PHP Tutoriais Webdev WordPress
Como resolver um conflito de plugin do WordPress?

Uma das coisas mais assustadoras que podem acontecer com um usuário do WordPress é que ele instala um plugin e, ao ativá-lo, recebe uma tela branca da morte.

Esta tela, onde antes ficava seu site lindamente criado, agora está toda branca ou produz uma ou duas linhas de texto sem formatação.

Um conflito de plugins ocorre quando você tem dois plugins instalados e, embora ambos funcionem bem, executá-los juntos pode causar a quebra do site.

Geralmente, isso acontece quando os plugins são executados em conjunto e ambos vêm com as mesmas funções de biblioteca ou funções semelhantes. Há um conflito de nomenclatura e o PHP gera um erro.

Este artigo discutirá como corrigi-los.

Conflitos de plugins estão se tornando mais raros

Primeiro, o conflito de plugins: quando alguém instala um plugin que entra em conflito com outro plugin, está se tornando mais raro.

Nos últimos anos, o WordPress introduziu proteções que significam que, se ocorrer um erro, em vez de ativar o plugin completamente, ele retornará automaticamente, exibirá um erro e deixará o plugin desativado.

Para a maioria dos usuários, é isso que eles veem.

O plugin O plugin “Broken Plugin” não pode ser ativado no WordPress, pois gera um erro fatal. (Imagem do autor, março de 2025)

Neste ponto, uma investigação deve ser feita em um ambiente de preparação com este plugin, mas, a menos que seja um plugin exclusivo, pode ser necessário encontrar uma alternativa que não entre em conflito com sua configuração.

Conflitos de plugins tendem a ocorrer quando você instala um plugin Must Use (MU) por meio de um serviço como FTP, uma atualização de um ou mais plugins ocorre ou você tem um plugin personalizado ativado e as alterações são enviadas ao servidor.

Vou explicar meu processo de resolução de conflitos de plugins.

Você tem acesso ao WordPress?

Para começar, a primeira pergunta que você deve fazer é se você tem acesso ao WordPress.

Se fizer isso, a sabedoria convencional determina que a ação a ser tomada é desativar todos os plugins e mudar para um tema padrão , para tentar solucionar onde o problema ocorre.

Se você estiver fazendo isso em um site ativo, isso não é o ideal, pois o site ainda pode ter muitas funcionalidades.

Uma abordagem diferente é instalar o plugin Health Check and Troubleshooting . A instalação deste plugin permitirá que você execute uma versão do site com um tema padrão, sem plugins instalados.

Basta ativar cada plugin por vez até identificar aquele que está causando o problema e então deixá-lo desativado.

Certifique-se de que o tema seja a última coisa ativada, pois temas personalizados podem usar funcionalidades em plugins, o que pode derrubar o site.

Se você não tem acesso ao WordPress

Se você não tiver acesso ao WordPress, pode ser necessário um pequeno processo para diagnosticar e corrigir o problema.

Essa é a abordagem que eu adoto da melhor forma possível ao diagnosticar conflitos de plugins. Isso pode ser feito em qualquer ordem, dependendo do seu conhecimento e do que você tem acesso.

Tem acesso ao e-mail administrativo? Você pode receber um e-mail

Se você tiver acesso ao e-mail do administrador com o WordPress (definido em Ajustes > Geral ), poderá receber um e-mail.

Isso permitirá que você coloque o site no Modo de Recuperação . A partir daí, você poderá fazer login, e o plugin que está com problema será identificado, permitindo que você o desative.

Modo de recuperação do WordPress com o conflito do plugin destacando Hello Dolly como onde o conflito está. Modo de recuperação do WordPress com o conflito do plugin destacando "Hello Dolly", como a causa do conflito. (Imagem do autor, março de 2025)

Verifique o arquivo de log dos hosts

O primeiro passo seria verificar o arquivo de log do host.

Dependendo do host, ele pode ser facilmente visível no painel do host ou no cPanel, mas se você tiver apenas um navegador de arquivos, ele tende a ficar fora de /public_html/ ou /www/ (que são publicamente disponíveis). Normalmente, ele costuma estar localizado um nível acima em um arquivo chamado /logs/.

Se você encontrar o arquivo (ele deve ter um nome como error_log), baixe-o e procure por qualquer erro fatal dentro do documento, talvez no final.

Na mensagem de erro, você deve ter alguns locais de arquivo que determinarão onde os problemas de arquivo ocorrerão.

Sem registros? Talvez seja necessário ativá-los

Se você tiver acesso FTP/SFTP ao site, mas não houver registros, talvez seja necessário ativá-los.

No diretório raiz do WordPress, adicione as seguintes linhas ao arquivo wp-config.php.

define( 'WP_DEBUG', verdadeiro );
define('WP_DEBUG_LOG', verdadeiro);
define('WP_DEBUG_DISPLAY', falso);
@ini_set( 'exibir_erros', 0 );

Isso criará um arquivo debug.log dentro da pasta wp-content/. A partir daí, você poderá ver os erros neste arquivo.

Dica de segurança: O debug.log ficará visível publicamente, então, depois de corrigir o problema, remova essas linhas do wp-config.php e exclua o arquivo debug.log.

Resolvendo esses conflitos de plugins

Seja qual for o método usado, seus logs devem produzir linhas como esta abaixo:

Erro fatal : Não é possível redeclarar hello_dolly_get_lyric() (anteriormente declarado em/wp-content/plugins/broken-plugin/index.php:17) em /wp-content/plugins/hello-dolly/hello.php na linha 46

Cada elemento significa:

  • "Erro Fatal" define o erro. Um erro fatal em PHP significa que o site para de funcionar imediatamente. Você pode receber outros erros ou avisos.
  • "Não é possível redeclarar hello_dolly_get_lyric()" é o erro fatal. Neste caso, há duas funções PHP com o mesmo nome (hello_dolly_get_lyric()). Esta é a base do conflito do plugin.
  • “/wp-content/plugins/hello-dolly/hello.php na linha 46” indica onde este erro ocorre. Embora o número da linha não seja importante (a menos que você mesmo esteja programando), ele indica o plugin onde o erro ocorre – neste caso, “hello-dolly”.

    O próximo passo é alterar manualmente o plugin.

    No programa FTP ou gerenciador de arquivos de sua escolha, acesse a pasta do plugin no WordPress – /wp-content/plugins/ neste caso – e renomeie a pasta do plugin (neste caso, troque "hello-dolly" por "broken-hello-dolly"). Isso desativará o plugin na próxima vez que você fizer login no WordPress.

    O plugin O plugin “Hello Dolly” foi desativado por não existir. Na verdade, ele foi renomeado para que o WordPress não o encontre. (Imagem do autor, março de 2025)

    É uma boa ideia não excluir o plugin do WordPress se você puder evitar. Isso forçará a desativação do plugin em questão.

    A partir daí, você pode investigar os dois plugins e identificar por que as duas funções são chamadas duas vezes.

    Para desenvolvedores: boas práticas podem evitar conflitos de plugins

    Se você é um desenvolvedor que cria sites WordPress, seguir boas práticas pode evitar conflitos de plugins.

    Aqui estão algumas dicas para evitar que seu plugin ou sites WordPress tenham conflitos de plugins com outros plugins:

    1. Se você não estiver usando namespaces PHP, recomendo nomear suas classes ou funções com um prefixo. Algo como plugin_name_function_name pode impedir que funcionalidades semelhantes tenham o mesmo nome de função. Tente torná-las únicas (portanto, não use wp_ como prefixo).
    2. Use function_exists em torno de suas funções para evitar que elas sejam carregadas se já existirem.
    3. Se você estiver importando uma funcionalidade, usar class_exists pode verificar se a classe já foi carregada.
    4. Carregar sua funcionalidade com atraso, portanto, nomear a pasta do plugin com uma letra do alfabeto atrasado é útil. Nem todo desenvolvedor segue a mesma abordagem que você!
    5. Se você estiver construindo em um site, certifique-se de que a configuração do seu servidor seja a mesma (ou o mais próximo possível) do ambiente ativo.

    Você nunca terá garantia total de que seu plugin ou tema não entre em conflito com os milhões de plugins que existem no espaço WordPress.

    No entanto, seguindo os passos acima, você pode minimizar os conflitos o máximo possível, e mudanças simples na sua escrita de código podem evitar um mundo de problemas de depuração mais tarde.