O que é o arquivo functions.php (e como usá-lo para aumentar as funcionalidades do seu site)

O functions.php possibilita uma nova camada de estilização e aplicação de funcionalidades no seu site WordPress. Descubra mais sobre ele.

  • 14 min de leitura
Foto de Lucas Tavares
o que é functions

Para aqueles que possuem o hábito de pesquisar tutoriais sobre o WordPress, já devem ter se deparado várias vezes com solicitações para inserir determinado código no arquivo functions.php do seu tema. Já se perguntou o porquê disso?

Nesse artigo completo, mostraremos o que é o functions.php, para quê ele serve e quais cuidados deve ter ao editar esse arquivo. Afinal de contas, um pequeno erro pode quebrar o seu site inteiro em poucos segundos. Mas, fique tranquilo. Caso algum erro assim aconteça, será fácil resolvê-lo através de um passo a passo bem simples.

Além disso, sugerimos a leitura do conteúdo até o final, pois mostraremos modificações úteis no functions.php que podem aumentar o poder do seu tema, expandir as funções do seu site e até mesmo te gerar mais tráfego. Tudo isso sem depender de outros plugins ou ferramentas externas.

OBS: O functions.php é apenas um dos arquivos que compõem o seu site. Se quiser saber mais detalhes sobre todos eles, veja o post sobre a estrutura de arquivos e diretórios do WordPress.

O que é o functions.php?

O functions.php é um arquivo que fica normalmente no diretório de todos os temas. A utilidade dele é estabelecer novas “funções” (por isso o nome functions) para o seu site, de forma a expandir os recursos dele.

Através do functions.php, por exemplo, é possível realizar diversas modificações como criar shortcodes, estipular tamanhos específicos de imagem e até mesmo o tamanho dos resumos de posts (os excerpts).

No decorrer desse conteúdo, serão mostradas inúmeras opções a serem implementadas no seu tema, desde que estejam de acordo com a sua necessidade, claro.

O functions.php dá mais escalabilidade ainda para o WordPress

O WordPress tem se destacado como o melhor CMS (content management system, ou sistema de gestão de conteúdo em português) de todos os tempos por conta de dois principais fatores: simplicidade e escalabilidade.

Simplicidade pelo fato de qualquer usuário novato conseguir facilmente utilizá-lo e escalabilidade pelo potencial de aumento de recursos através de plugins. Para praticamente qualquer coisa há um plugin específico no WordPress.

Entretanto, para não depender exclusivamente de plugins, existem funções simples a estabelecerem funcionalidades novas de forma escalável para o WordPress. Por isso o functions.php foi desenvolvido.

Por que não resolver tudo isso através de plugins ao invés de utilizar o functions.php? Porque tudo escrito no functions.php está vinculado exclusivamente ao tema. Isso é extremamente útil para desenvolvedores.

Imagine criar um tema e para ele funcionar corretamente ter que exigir dos usuários a instalação de mais 18 plugins diferentes. Uma atitude nada otimizada, certo? Embora seja comum, a solicitação de instalação de plugins em temas profissionais, é necessário oferecer certa operacionalidade sem eles, para isso se usa o functions.php.

Como funciona o functions.php por dentro

ações e filtros do functions

Assim como descrito no WordPress Codex, a documentação oficial para programadores do CMS, o functions funciona através do hooks (ganchos, em português), em que um trecho de código pode interagir ou modificar outro código em pontos pré-determinados.

Assim, não é necessário reescrever códigos parecidos, sendo que um simples hook pode alterar um trecho completo, facilitando o desenvolvimento de temas.

Esses hooks podem ser definidos em duas categorias distintas: actions (ações) e filters (filtros).

  • Um action pega uma informação recebida, trabalha ela e não retorna nada ao hook de chamada.
  • Um filter pega as informações enviadas, as filtra e retorna para um uso futuro.

Para os programadores, o conceito de action e filter se torna mais fácil de entender quando se vê o action como um função void (ou sem retorno) e o filter como uma função que retorna parâmetros. Embora não sejam exatamente assim, esse comportamento em comum facilita o entendimento.

Onde fica o functions.php?

Fica exatamente na mesma pasta do seu tema WordPress. Se estiver utilizando o gerenciador de arquivos ou cliente FTP, basta ir em wp-content → Themes → Nome do seu tema: functions.php.

Functions arquivo via FTP

É possível encontrá-lo também no menu Aparência → Editor de Tema. Entretanto, é extremamente recomendado não editá-lo por aí, visto que qualquer erro tiraria o site do ar (ou apresentaria erros específicos) e se perderia acesso ao painel do WordPress.

arquivo functions dentro do painel do WordPress

Em outras palavras, seu site ficaria com erro e não seria possível logar novamente para corrigir o problema, exigindo dessa forma o acesso via FTP ou gerenciador de arquivos, como dito anteriormente.

O erro mais comum gerado por um arquivo functions.php com código inválido é a whitescreen of the death (chamado de tela branca da morte), em que ao acessar o site, é mostrado apenas uma tela branca sem informação nenhuma.

Qual a melhor maneira de editar o functions.php?

A melhor maneira, definitivamente, é usando um plugin que adiciona snippets (trechos de código) similar ao próprio functions, mas sem alterar o arquivo que vem no seu tema. Esse método possui vantagens relevantes, como:

  • Manter o código em pleno funcionamento mesmo se o tema for trocado ou o WordPress passar por atualizações.
  • Possibilitar a manutenção de código, mesmo se estiver com erro.
  • Salvar o seu site da tela branca da morte.

Que plugin é esse? É o WPCode – Insert Headers and Footers + Custom Code Snippets – WordPress Code Manager. Além dele permitir a inclusão de funções, também vem com uma biblioteca de códigos, de forma a permitir funcionalidades como:

  • Permitir upload de arquivos do tipo SVG.
  • Desabilitar atualizações automáticas.
  • Desativar a barra de administração do front-end.
  • Bloquear todos os comentários.
  • Remoção da versão do WordPress (o que garante mais segurança).
  • Utilização do editor clássico do WordPress.
  • Desativar o WordPress REST API.

O que fazer se um erro no functions.php quebrar o site?

A única coisa a ser feita é deletar o código que foi inserido, de forma ao site voltar à configuração normal. Entretanto, dependendo da forma que o código tenha sido colocado, essa tarefa pode ser um pouco complicada.

  • Se adicionou via FTP ou gerenciador de arquivos, acesse o arquivo novamente e delete as linhas de código inseridas.
  • Se adicionou via painel do WordPress (opção não recomendada), acesse o arquivo via gerenciador de arquivos ou FTP e delete as linhas de código inseridas.
  • Se adicionou via plugin e não consegue acessar a tela de administração do WordPress, desative o plugin mudando o nome da pasta dele (para qualquer outro nome) via FTP ou gerenciador de arquivos.

Códigos prontos para usar no seu functions.php

1. Adicione o código de acompanhamento do Google Analytics no seu site

Existem plugins maravilhosos que conectam o seu site ao Google Analytics. Caso queira fazer essa conexão via functions.php, insira o código abaixo:

<?php

//O código basicamente insere o código no analytics acima do fechamento da tag header do site, como normalmente é solicitado
add_action('wp_head', 'googleanalytics');
function googleanalytics() { ?>

//insira aqui o código do seu Google Analytics, salve o arquivo, atualize a página e verifique se a conexão foi realizada com sucesso.

<?php } ?>

2. Insira um “tempo estimado de leitura” nos seus posts

Ter um tempo estimado de leitura é interessante para sites com conteúdos mais longos, de forma a mostrar para o leitor o tempo a ser investido para o consumo do conteúdo.

Normalmente, podemos ver isso em sites de escritores ou até mesmo tutoriais, uma vez que, nesses casos, o tempo pode ser primordial para avaliar se a solução será colocada em prática no exato momento ou não.

Para colocar esse código em pleno funcionamento, é necessário inseri-lo em duas partes do seu tema. Por isso, recomenda-se utilizá-lo apenas se já estiver acostumado com a edição de arquivos da instalação do WordPress.

O primeiro trecho de código, logo abaixo, deve ser inserido normalmente no functions.php:

function reading_time() {

//pega o conteúdo da página atual
$content = get_post_field( 'post_content', $post->ID );

//verifica a quantidade de palavras
$word_count = str_word_count( strip_tags( $content ) );

// divide a quantiade de palavras por 200, sendo um média de quantas palavras uma pessoa consegue ler por minuto. É possível alterar essa quantidade, se quiser
$readingtime = ceil($word_count / 200);

// Se o tempo de leitura for até 1 minuto, o código exibe "1 minuto".
if ($readingtime == 1) {
$timer = " minuto";

// Senão, caso o tempo seja mais de 1 minuto, o código exibe "x minutos", com o plural
} else {
$timer = " minutos";
}
$totalreadingtime = $readingtime . $timer;

// A função retorna o tempo total, de forma a exibir no site quanto o "gatilho for acionado"
return $totalreadingtime;
}

Além desse código, que traz toda a funcionalidade necessária para o cálculo de tempo, é necessário inserir o gatilho onde deseja mostrar o resultado no seu site.

O código é esse abaixo e ele deve ser inserido nos arquivos do seu tema, normalmente logo abaixo dos metadados, aquelas informações sobre “Autor”, “Data”, “Categoria”, etc.

echo reading_time();

Em temas oficiais do WordPress, essa seção de metadados é encontrada após o código abaixo, encontrado dentro do arquivo single.php.

echo '<div class="entry-meta">';

Para outros temas, fica a recomendação de encontrar o local específico para mostrar o resultado do tempo estimado.

OBS: Caso o código gere algum erro, é porque foi inserido fora das tags PHP, sendo necessário incluir os indicadores de código dessa linguagem de programação, como mostra o código abaixo:

<?php echo reading_time(); ?>

3. Esconda a versão atual do seu WordPress

Nem sempre é possível atualizar a versão do WordPress. Seja devido a plugin antigos que podem gerar erros ou por ter desabilitado isso em sites de clientes, para evitar o risco de problemas devido a plugins e temas incompatíveis.

No entanto, sendo essa prática não recomendada, é notável que muitos a fazem. Logo, para reduzir os danos, é aconselhável esconder a sua versão do PHP.

Para fazer isso através do arquivo functions, é preciso inserir um pequeno trecho de código:

remove_action('wp_head', 'wp_generator');

Ele remove a ação de mostrar, dentro do cabeçalho do site e do Feed RSS, a versão da instalação do WordPress.

Remova os widgets padrão

Quando se instala o WordPress, ele, por padrão, pode inserir uma quantidade elevada de widgets. Caso queira removê-los, use o código abaixo.

function unregister_default_widgets() {
unregister_widget('WP_Widget_Pages');
unregister_widget('WP_Widget_Calendar');
unregister_widget('WP_Widget_Archives');
unregister_widget('WP_Widget_Links');
unregister_widget('WP_Widget_Meta');
unregister_widget('WP_Widget_Search');
unregister_widget('WP_Widget_Text');
unregister_widget('WP_Widget_Categories');
unregister_widget('WP_Widget_Recent_Posts');
unregister_widget('WP_Widget_Recent_Comments');
unregister_widget('WP_Widget_RSS');
unregister_widget('WP_Widget_Tag_Cloud');
unregister_widget('WP_Nav_Menu_Widget');
}
add_action('widgets_init', 'unregister_default_widgets', 11);

Entretanto, se sentir falta de algum, basta deletar a linha de código correspondente, ou até mesmo o código completo, se precisar.

4. Mude o gravatar padrão

How to change the default Gravatar on WordPress - HostPapa Knowledge Base

Sabe o gravatar? Aquela imagem utilizada para comentários que não possuem foto definida? É possível trocar a imagem acinzentada e “sem graça” padrão por uma personalizada.

O seguinte código é capaz disso, sua única preocupação deve ser em alterar a URL para a imagem que deseja.

add_filter( 'avatar_defaults', 'wpb_new_gravatar' );
function wpb_new_gravatar ($avatar_defaults) {

//É só trocar o link nessa parte abaixo do código
$myavatar = '<https://url da imagem>';
$avatar_defaults[$myavatar] = "Default Gravatar";
return $avatar_defaults;
}

5. Desabilitar a pesquisa no seu site

As funções de busca do WordPress já vem com a instalação do CMS e não necessariamente através de temas, como muitos acreditam. Por isso, caso queira desativar buscas, por algum motivo, esse código será capaz de fazer tal função.

function fb_filter_query( $query, $error = true ) {
if ( is_search() ) {
$query->is_search = false;
$query->query_vars[s] = false;
$query->query[s] = false;
if ( $error == true )
$query->is_404 = true;
}
}
add_action( 'parse_query', 'fb_filter_query' );
add_filter( 'get_search_form', create_function( '$a', "return null;" ) );

Lembrando que esse mesmo código pode gerar erros casos o usuário digite algo na barra de pesquisa do seu site. Logo, o ideal é utilizar o código acima e também remover os formulários do seu tema.

6. Proteja do seu site de requisições maliciosas

Existem diversas maneiras de proteger a sua instalação e a sua hospedagem WordPress. A mais comum (e também recomendada) é a instalação de plugins de segurança. Entretanto, caso não possa utilizá-los por algum motivo, o código abaixo bloqueia requisições consideradas maliciosas.

global $user_ID; if($user_ID) {
    if(!current_user_can('administrator')) {
        if (strlen($_SERVER['REQUEST_URI']) > 255 ||
            stripos($_SERVER['REQUEST_URI'], "eval(") ||
            stripos($_SERVER['REQUEST_URI'], "CONCAT") ||
            stripos($_SERVER['REQUEST_URI'], "UNION+SELECT") ||
            stripos($_SERVER['REQUEST_URI'], "base64")) {
                @header("HTTP/1.1 414 Request-URI Too Long");
                @header("Status: 414 Request-URI Too Long");
                @header("Connection: Close");
                @exit;
        }
    }
}

Importante: embora seu site fique mais seguro, apenas o código não garante a proteção total.

7. Remova a barra de administrador

image

A barra de administração do WordPress é aquela que aparece quando se acessa o seu site logado. Existe uma forma simples de desabilitá-la, basta ir nas configurações do usuário e solicitar que ela esteja oculta.

image

Entretanto, caso queira forçar a mesma alteração para todos os usuários do site, utilize o seguinte código:

add_filter( 'show_admin_bar', '__return_false' );

Por padrão, a estrutura de link dos autores do WordPress é nomedosite.com.br/author/nomedoautor. Caso queira modificar para outro nome (ideal para blogs de jornalismo ou escrita), basta usar o código abaixo.

add_action('init', 'cng_author_base');
function cng_author_base() {
    global $wp_rewrite;
    
	  //onde está "escritor", insira o nome que preferir
		$author_slug = 'escritor';
    $wp_rewrite->author_base = $author_slug;
}

Esse código é muito relevante para blogs que utilizam links para o Twitter com frequência. Ele faz com que qualquer @ (seguido de um nome de usuário do Twitter) vire um link para o perfil correspondente.

Por exemplo, se escrever @google no seu post, ele linkará automaticamente a conta do Google no Twitter.

O código pode ser visto abaixo:

function content_twitter_mention($content) {
return preg_replace('/([^a-zA-Z0-9-_&])@([0-9a-zA-Z_]+)/', "$1<a href=\\"<https://twitter.com/$2\\>" target=\\"_blank\\" rel=\\"nofollow\\">@$2</a>", $content);
}
add_filter('the_content', 'content_twitter_mention');   
add_filter('comment_text', 'content_twitter_mention');

10. Esvazie automaticamente a lixeira

Arquivos de posts e páginas possuem uma lixeira capazes de recuperar, de forma indefinida, os conteúdos excluídos. Caso queira apagar automaticamente cada de um desses, insira o código abaixo:

// Aqui está programado para esvaziar a lixeira depois de 5 dias. É possível alterar o número abaixo
<?php define('EMPTY_TRASH_DAYS', 5 );?>

Tome cuidado com essa alteração. Afinal de contas, ter uma lixeira de forma indefinida tende a ser útil para recuperação de material apagado sem querer.

Conclusão

O arquivo functions.php é responsável pelo aumento de escalabilidade do WordPress. Por conta disso, escrevemos esse conteúdo inteiro explicando o que é o functions.php, para quê ele serve e trechos de código para utilizar no seu próprio site.

Qualquer dúvida, como sempre, a caixa de comentários abaixo pode ser utilizada. Responderemos o quanto antes.

Esperamos que o post tenha sido claro e cooperado para o entendimento de como dar ainda mais funcionalidades a sua instalação do WordPress.