Recentemente, um usuário nos perguntou como verificar se uma função PHP existe antes de adicionar um novo código ao seu site WordPress que depende dela.
A melhor parte do WordPress é sua flexibilidade, incluindo a capacidade de adicionar suas próprias funções personalizadas ao seu site. Entretanto, às vezes, seu código personalizado pode não funcionar porque a função à qual ele se refere não existe mais.
Neste artigo, mostraremos como verificar facilmente se uma função existe antes de adicioná-la ao seu tema do WordPress.
Por que adicionar “If Function Exists” 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 provedor de hospedagem do WordPress.
Como o código PHP precisa terminar de ser executado antes que a página seja carregada nos navegadores dos visitantes, ele tem 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 a execução do restante do código, ele será interrompido e exibirá uma mensagem de erro crítico ou fatal.
O que pode fazer com que uma função pare de funcionar repentinamente ou desapareça?
Esse é um erro mais comum do WordPress do que você imagina.
Por exemplo, digamos que um dos seus plug-ins do WordPress venha com uma função que você adicionou à área de cabeçalho ou rodapé do seu tema. Desativar o plug-in fará com que a função desapareça e causará o erro crítico em seu site do WordPress.
Dito isso, vamos dar uma olhada em como verificar facilmente se uma função existe antes de executá-la nos arquivos de tema do WordPress.
Verificando se uma função existe no WordPress
Felizmente, a linguagem de programação PHP vem com um método incorporado 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 exemplo de trecho de código que você pode usar para experimentar.
Você pode adicioná-lo diretamente ao arquivo functions.php do seu tema, mas, neste tutorial, usaremos o plug-in de snippet 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 plug-in gratuito WPCode. Se precisar de ajuda para fazer isso, consulte nosso guia passo a passo para iniciantes sobre como instalar um plug-in do WordPress.
Após a ativação, você precisa ir para Code Snippets ” + Add Snippet no painel do WordPress. Uma vez lá, passe o mouse sobre a opção “Add Your Custom Code (New Snippet)” (Adicionar seu código personalizado (novo snippet)) e clique no botão “Use snippet” (Usar snippet) que aparece.
Isso abrirá uma nova página na qual você poderá adicionar seu snippet personalizado. Digite um título como “Display Current Time With Timezone” (Exibir hora atual com fuso horário) e cole o trecho de código abaixo no painel Code Preview (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 “PHP Snippet” no menu suspenso Code Type (Tipo de código) para garantir que o código seja executado corretamente.
Por fim, você deve alternar o botão Ativar para a posição Ativado e clicar no botão “Salvar snippet” para armazenar seu novo snippet de código.
Para chamar essa função, você precisará adicionar o seguinte código em qualquer lugar do seu tema do WordPress onde deseja exibir a hora atual.
<?php wpb_show_timezone(); ?>
Esta é a aparência em nosso site de teste.
Agora, o que aconteceria se o código responsável pela execução dessa função desaparecesse?
A chamada para a função interromperá seu site da seguinte forma.
Vamos adicionar uma verificação para garantir que esse código seja executado somente quando a função existir.
Novamente, você precisará adicionar o código diretamente ao arquivo functions.php do seu tema ou usar um plug-in de snippet 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()
. Essa função verifica se uma função existe e retorna True ou False.
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. Talvez você também queira ver nosso guia completo de solução de problemas do WordPress ou nossas escolhas de especialistas para os melhores construtores de páginas de arrastar e soltar do WordPress.
Se você gostou deste artigo, inscreva-se em nosso canal do YouTube para receber tutoriais em vídeo sobre o WordPress. Você também pode nos encontrar no Twitter e no Facebook.
Rakib
really helpful
Joana Pereira
Good call Kovshenin. I know exactly what you mean because I was using a custom function with contact form 7 (to retrieve the ip address on each form) and every time the plugin was updated, the theme broke.
Thanks for the tip
Joana Pereira
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