🎉 USE O CUPOM DESCONTO.FULL | 20% OFF acima de R$ 50,00

Como corrigir Cannot redeclare function

Time Full Services Time Full Services
Tipo Erro de PHP
Nome do erro Cannot redeclare function EN: Cannot redeclare function
Severidade Grave
Descrição O erro Cannot redeclare function é um erro fatal de PHP que ocorre quando a mesma função é definida duas vezes na execução. No WordPress, costuma surgir ao colar um snippet repetido no functions.php ou ao ativar dois plugins que declaram uma função com o mesmo nome.

O que é o erro Cannot redeclare function?

No PHP, cada função declarada com a palavra function só pode existir uma vez por execução. O WordPress carrega o tema e todos os plugins ativos numa mesma requisição, então se duas partes do código declaram uma função com o mesmo nome, o PHP encontra a segunda declaração, percebe que o nome já existe e aborta com “Cannot redeclare”. O erro aponta o arquivo e a linha da declaração duplicada, e o site para porque é um erro fatal, não um simples aviso.

Como identificar

  • Mensagem “Fatal error: Cannot redeclare nome_da_função() (previously declared in /caminho/arquivo.php:N)”.
  • A mensagem cita dois arquivos: onde a função foi declarada primeiro e onde a duplicata aparece.
  • O erro surge após colar um snippet duas vezes no functions.php ou ativar um segundo plugin parecido.
  • O site ou só o wp-admin trava na linha do erro, mostrando apenas a mensagem fatal.
Antes de começar: Faça backup do functions.php antes de editar e evite o Aparência > Editor de temas: um erro fatal salvo por ali pode trancar o wp-admin e exigir correção via FTP. Edite snippets por FTP ou por um plugin de snippets que valida o código.

Como prevenir

  • Use prefixos únicos nos nomes de função (ex.: meusite_função) para evitar colisões com plugins e temas
  • Envolva suas funções globais em if ( ! function_exists() ) antes de declará-las
  • Prefira require_once e include_once para arquivos de funções, nunca a versão sem _once

Causa

  • Snippet com uma função colado duas vezes no functions.php do tema.
  • Dois plugins ativos que declaram uma função com exatamente o mesmo nome no escopo global.
  • Arquivo PHP incluído duas vezes via include em vez de include_once, redeclarando a função.
  • Função copiada de um tutorial sem o nome ter sido renomeado, colidindo com uma já existente no tema.
  • Plugin antigo e sua versão atualizada coexistindo na pasta, ambos declarando a mesma função.

Como resolver

  1. Leia os dois arquivos citados no erro: a mensagem mostra onde a função foi declarada primeiro e onde está a duplicata. Abra os dois caminhos via FTP para comparar.
  2. Remova a declaração duplicada: se você colou o mesmo snippet duas vezes no functions.php, apague a segunda cópia. A função declarada uma única vez volta a funcionar.
  3. Se forem dois plugins, desative um: quando a colisão é entre plugins, desative o plugin menos essencial pela tela de plugins ou renomeando a pasta dele via FTP. Procure uma alternativa que não use o mesmo nome de função.
  4. Proteja a função com function_exists: no seu próprio código, envolva a declaração em uma checagem que só define a função se ela ainda não existir, evitando o conflito:
    if ( ! function_exists( 'minha_função' ) ) { /* declaracao aqui */ }
  5. Use include_once para arquivos incluídos: se o problema vem de um arquivo carregado mais de uma vez, troque include por include_once ou require por require_once, para o PHP carregar o arquivo só na primeira chamada.
PHP
// ERRO: a mesma funcao declarada duas vezes na execucao
function meu_rodape() { echo 'Rodape'; }
function meu_rodape() { echo 'Rodape'; }  // <- Cannot redeclare

// CORRETO: so declara se o nome ainda nao existir
if ( ! function_exists( 'meu_rodape' ) ) {
    function meu_rodape() {
        echo 'Rodape';
    }
}

// Para arquivos incluidos, use a variante _once
require_once get_template_directory() . '/inc/helpers.php';

Perguntas frequentes

O que causa o erro Cannot redeclare function no WordPress?
Uma função PHP com o mesmo nome foi declarada duas vezes na mesma execução. Quase sempre é um snippet colado em duplicidade no functions.php ou dois plugins que definem uma função homônima no escopo global. O PHP encontra a duplicata e aborta com erro fatal.
Como sei qual arquivo tem a função duplicada?
A própria mensagem cita os dois caminhos: onde a função foi declarada primeiro (previously declared in) e onde está a segunda declaração que disparou o erro. Abra os dois arquivos via FTP e compare as linhas indicadas.
function_exists resolve de vez o Cannot redeclare?
Resolve quando o conflito está no seu próprio código: envolver a declaração em if ( ! function_exists() ) impede a segunda criação. Se a colisão é entre dois plugins de terceiros, a solução real é desativar um deles ou trocá-lo por outro.
Dois plugins declaram a mesma função. O que faço?
Desative o plugin menos essencial pela tela de plugins ou renomeando a pasta dele via FTP, e procure uma alternativa. Plugins bem escritos prefixam suas funções, então a colisão costuma indicar que um dos dois foi mal codificado.
Qual a diferença entre include e include_once?
O include carrega o arquivo toda vez que é chamado; se ele declara funções e for incluído duas vezes, gera Cannot redeclare. O include_once carrega o arquivo apenas na primeira chamada, então é a escolha certa para arquivos que definem funções.
O erro travou meu wp-admin. Como volto a entrar?
Acesse o site via FTP, abra o functions.php do tema ou desative o plugin culpado renomeando a pasta dele dentro de wp-content/plugins. Removida a declaração duplicada, o erro fatal desaparece e o painel volta a carregar.

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →

Uma nova era para o WordPress.

A FULL Services redefine o CMS com uma arquitetura modular que transforma o WordPress em um motor de crescimento digital. 

Painéis personalizados

Um novo nível de controle para o WordPress. Acompanhe métricas, automações e evolução do seu site em um único painel visual.

A força por trás de grandes marcas

Para agências, estúdios e profissionais independentes que desejam oferecer soluções de alto nível com sua própria marca.

Componentes

Hero Sections

30 componentes

Seções de CTA

14 componentes

Login

14 componentes

Blog

14 componentes

Cabeçalhos

24 componentes

Seções de FAQ

53 componentes

Cadastro

53 componentes

Blog individual

53 componentes

Rodapés

28 componentes

Seções de contato

27 componentes

Seções de preços

27 componentes

Faixas

27 componentes

Portfólio

16 componentes

Seções de equipe

12 componentes

Números

12 componentes

Logotipos

12 componentes