Um de nossos leitores mais técnicos nos perguntou recentemente como verificar a existência de uma função PHP antes de integrar novo código a um site WordPress. Isso é importante para garantir que seu site funcione sem problemas e evite erros.
Uma das forças do WordPress é sua flexibilidade e a equipe do WPBeginner adiciona regularmente funções personalizadas para melhorar a funcionalidade do nosso site. Entendemos que código PHP personalizado pode falhar se chamar uma função que não existe mais ou ainda não foi definida.
Neste artigo, mostraremos como verificar facilmente se uma função existe antes de adicioná-la ao seu tema WordPress, permitindo que você evite erros potenciais em seu código.

Por que adicionar 'Se a função existir' ao seu código personalizado?
O WordPress é escrito principalmente na linguagem de programação PHP. PHP é uma linguagem de programação do lado do servidor que é executada nos servidores do seu provedor de hospedagem WordPress.
Como o código PHP precisa terminar de ser executado antes que a página seja carregada nos navegadores dos seus visitantes, existem certas limitações. Uma dessas limitações é que, se algo der errado, isso pode impedir que a página inteira seja carregada.
No WordPress, se uma função ausente impedir que o restante do código seja executado, ele para e exibe uma mensagem de erro crítico ou erro fatal.

O que pode fazer uma função parar de funcionar repentinamente ou desaparecer?
É um erro comum do WordPress mais do que você imagina.
Por exemplo, digamos que um dos seus plugins do WordPress venha com uma função que você adicionou à área de cabeçalho ou rodapé do seu tema. Desativar o plugin fará com que a função desapareça e cause o erro crítico no seu site WordPress.
Dito isso, vamos ver como verificar facilmente se uma função existe antes de executá-la nos arquivos do seu tema WordPress.
Verificando se uma Função Existe no WordPress
Felizmente, a linguagem de programação PHP vem com um método integrado para verificar facilmente a existência de uma função antes de executá-la.
Digamos que você tenha uma função do WordPress que exibe a hora atual com informações de fuso horário. Aqui está um trecho de código de exemplo que você pode usar para tentar isso.
Você pode adicioná-lo diretamente ao arquivo functions.php do seu tema, mas neste tutorial, usaremos o plugin de trechos de código WPCode porque é a maneira mais segura e fácil de adicionar código personalizado no WordPress.
Primeiro, você precisa instalar e ativar o WPCode Free Plugin. Se precisar de ajuda para fazer isso, consulte nosso guia passo a passo para iniciantes sobre como instalar um plugin do WordPress.
Após a ativação, você precisa ir para Snippets de Código » + Adicionar Snippet no seu painel do WordPress. Uma vez lá, passe o mouse sobre a opção ‘Adicionar seu código personalizado (Novo Snippet)’ e clique no botão ‘Usar snippet’ que aparece.

Isso abrirá uma nova página onde você pode adicionar seu snippet personalizado. Digite um título como ‘Exibir hora atual com fuso horário’ e cole o snippet de código abaixo no painel de visualização de código.
//display current time with timezone
function wpb_show_timezone() {
$better_time = current_time('F j, Y g:i a e');
echo "<p>The current time is " . $better_time ."</p>";
}

Depois disso, você precisa selecionar ‘Snippet PHP’ no menu suspenso Tipo de Código para garantir que o código seja executado corretamente.
Finalmente, você deve mudar o alternador Ativar para a posição Ligado e clicar no botão ‘Salvar Snippet’ para armazenar seu novo snippet de código.

Para chamar esta função, você precisará adicionar o seguinte código em qualquer lugar do seu tema do WordPress onde você deseja exibir a hora atual.
<?php wpb_show_timezone(); ?>
É assim que ficou em nosso site de teste.

Agora, o que aconteceria se o código responsável por executar esta função desaparecesse?
A chamada para a função quebrará seu site assim.

Vamos adicionar uma verificação para garantir que este código só seja executado quando a função existir.
Novamente, você precisará adicionar o código diretamente ao arquivo functions.php do seu tema ou usar um plugin de trechos de código como o WPCode (recomendado):
<?php
if( function_exists('wpb_show_timezone')) {
wpb_show_timezone();
} else {
// do nothing
}
?>
Neste código, estamos usando a função function_exists(). Esta função verifica se uma função existe e retorna Verdadeiro ou Falso.
Em seguida, adicionamos uma condição if-else para tomar a ação apropriada dependendo da disponibilidade da função.
Agora, quando a função não estiver mais disponível, o código simplesmente a ignorará, e o WordPress poderá carregar o restante do seu site normalmente.

Esperamos que este artigo tenha ajudado você a aprender como verificar se uma função existe no WordPress. Você também pode querer ver nosso guia sobre como exibir código facilmente em seu site WordPress ou nossa seleção especializada dos melhores editores de código para Mac e Windows para editar arquivos WordPress.
Se você gostou deste artigo, por favor, inscreva-se em nosso Canal do YouTube para tutoriais em vídeo do WordPress. Você também pode nos encontrar no Twitter e no Facebook.
kzain
Me salvou de uma dor de cabeça! Não posso dizer quantas vezes adicionei código apenas para ter meu tema travado porque uma função não estava lá. Super fácil de implementar e mantém meu código limpo.
Obrigado pela explicação clara
Jiří Vaněk
Gostaria de perguntar, se o PHP me der um erro sobre uma função PHP inexistente, essa função pode ser habilitada, ou isso tem que ser feito pelo administrador do servidor? E é possível que a função dependa da versão do PHP? Ou seja, que uma determinada função esteja disponível em uma versão do PHP, mas não em outra?
WPBeginner Support
Nesse caso, a função não existe, então você precisaria verificar qual é a função específica para ajudar a encontrar o que está causando o erro. Depois disso, você pode verificar com o suporte o que está causando o erro ou remover o que está causando o erro.
Admin
Rakib
muito útil
Joana Pereira
Boa ideia, Kovshenin. Sei exatamente o que você quer dizer porque eu estava usando uma função personalizada com o contact form 7 (para recuperar o endereço IP em cada formulário) e toda vez que o plugin era atualizado, o tema quebrava.
Obrigado pela dica
Joana Pereira
kzain
já passei por isso com atualizações de plugins quebrando temas também! Usar function_exists() é definitivamente um divisor de águas para evitar essas dores de cabeça
kovshenin
Right, only please stop checking for dynamic_sidebar with function_exists in WordPress themes, unless you need to support WordPress 2.2 and below, which I *highly* doubt. Also with the user photo plugin, the whole approach seems to be wrong and redundant to me, it looks like many developers are missing the whole point of pluggable functions…. Oh well