Se você começou a criar seu próprio tema, ou talvez criando um tema infantil para personalizar outro tema, você terá aprendido tudo sobre arquivos de modelo e a hierarquia do modelo de tema . Mas e quanto ao tema functions.php arquivo?
O arquivo de funções é onde você coloca toda a funcionalidade que o seu tema precisa que não se relaciona apenas com um modelo, portanto, não é um código que produz apenas um tipo de conteúdo ou conteúdo em apenas um lugar na página, como a barra lateral Ou rodapé.
O WordPress Codex define o arquivo de funções como este:
O arquivo de funções se comporta como um plugin do WordPress , adicionando recursos e funcionalidades a um site do WordPress. Você pode usá-lo para chamar funções, PHP e built-in WordPress, e para definir suas próprias funções. Você pode produzir os mesmos resultados adicionando código a um Plugin WordPress ou através do arquivo de funções do Tema do WordPress.
É importante observar a semelhança entre o arquivo de funções e um arquivo de plugin. Você usa o arquivo de funções para o mesmo tipo de código que você adicionaria a um plugin; Na verdade, se você quisesse, você poderia ter um arquivo de funções enorme e nenhum plugin no seu site.
Mas essa não seria uma boa idéia.
Se você tem um monte de código funcional que você precisa usar em seu site, ou quer que esse código ainda funcione se você alterar os temas, então você deve colocar isso em um plugin. Mas se esse código é dependente do tema, então functions.php é o lugar certo para colocá-lo. A regra geral é:
Use functions.php quando precisar adicionar funcionalidades simples relacionadas à forma como seu conteúdo é exibido (ou seja, não funcionará sem o seu tema ativado). Isso pode incluir a adição de fontes extras, por exemplo.
Escreva um plugin quando a funcionalidade for mais complexa ou quando a funcionalidade extra não for dependente do tema. Um exemplo é registrar tipos de postagem – você não quer perder seus tipos de publicação se você alterar os temas no futuro.
Nesta postagem, eu vou levá-lo através de alguns dos usos de functions.php , e mostrar-lhe como adicionar código e como ativar esse código. Eu também vou mostrar como usar functions.php em um tema filho para substituir ou adicionar funcionalidade a um tema pai.
Usos comuns para o arquivo de funções
Tendo em mente que o arquivo de funções é para código dependente do tema (ou seja, isso será perdido se você mudar de tema), existem alguns exemplos específicos quando a adição de código é particularmente útil. Esses incluem:
- Adicionando suporte a temas, por exemplo, para imagens em destaque, formatos de postagem e links RSS
- Contando o WordPress onde o arquivo de tradução do tema é
- Registando locais para menus de navegação, para que os usuários possam adicionar menus através da tela de administração de menus
- Adicionando, removendo ou substituindo a funcionalidade de um tema pai, usando um tema filho.
Nesta publicação, vou mostrar-lhe como fazer cada uma dessas coisas.
Adicionando Código ao Arquivo de Funções e Ativando-o
Você adiciona código ao arquivo de funções e diz ao WordPress para ativá-lo exatamente da mesma maneira que você faria com um plugin. Os métodos incluem:
- Escrevendo uma função que você chama em seus arquivos de modelo de tema – isso é útil quando você possui um bloco de código que deseja usar em vários lugares do seu tema, mas não funcionará em uma parte de modelo.
- Conectando sua função a um gancho de ação ou filtro. Isso executa a função quando o WordPress encontra esse gancho. O WordPress oferece centenas de ganchos, e você também pode encontrar alguns em seu tema e plugins que você pode usar. Lembre-se, se você está escrevendo algo em functions.php que deseja ativar através de um gancho em um tema que você comprou ou baixou do diretório do plugin do WordPress, então você precisará criar um tema infantilpara fazer isso. Se você não fizer o seu arquivo de funções será substituído na próxima vez que você atualizar o tema.
- Criando um shortcode que você adiciona ao seu conteúdo. Eu não recomendaria adicionar um shortcode através do arquivo de funções – é melhor fazê-lo usando um plugin, de modo que a saída de conteúdo por esse shortcode não seja perdida se você mudar de tema no futuro. Isso também significa que você pode usar esse plugin Em outros sites, dando-lhe acesso ao seu shortcode repetidas vezes.
- Criando um widget. É uma prática ruim fazer isso no arquivo de funções; Se você quiser criar um widget, crie um plugin para ele.
Então, vamos ver como você trabalha com functions.php e como você adiciona algumas das funcionalidades mais comuns a ele.
Criando um arquivo de funções
Se o seu tema ainda não tiver um arquivo de funções, você precisará criar um. Crie um novo arquivo no diretório principal do tema e ligue para functions.php .
Você terá que adicionar uma tag PHP de abertura ao arquivo, mas você não precisa de um fechamento:
<? Php |
Seu arquivo de funções agora está pronto para você adicionar seu código. Eu tende a adicionar grandes blocos de texto comentado antes de cada seção, para que eu possa facilmente encontrar o meu código novamente. Algo assim:
/ ***************************************************** *********************** | |
My_function – breve linha descrevendo o que faz | |
********************************************************** *********************** |
Dessa forma, quando estou digitalizando meu arquivo, posso encontrar facilmente cada bloco de código.
Adicionando código usado comummente em functions.php
Vejamos alguns dos usos mais comuns para o arquivo de funções e como codificá-los.
Adicionando Suporte de Tema
Existem alguns recursos no WordPress que você deve adicionar o suporte ao tema para que seu tema possa aproveitá-los. Esses são:
- Formatos de postagem – formatos semelhantes ao tumblr, como padrão, vídeo, citações e de lado
- Postar miniaturas – também conhecidas como imagens apresentadas. Se você quiser exibir estes no seu tema, você também precisará adicionar o código para exibi-los nos arquivos do modelo, mas eles não estarão disponíveis nas telas de administração, a menos que você adicione suporte a temas para eles.
- Um plano de fundo personalizado – permite que você (ou outros que usem seu tema) personalize a imagem de fundo e as cores através do personalizador
- Um cabeçalho personalizado – que funciona de forma semelhante ao plano de fundo personalizado
- Links de alimentação automática – para feeds RSS
- HTML5 – para formulários de pesquisa, comentários, galeria, etc. Isso não afeta sua capacidade de codificar seu tema usando HTML5, mas se relaciona com o código gerado pelo WordPress
- Etiqueta de título – isso permite que você adicione uma etiqueta de título nas
<head>
suas páginas para fins de SEO e acessibilidade. Você não precisará disso se você tiver um plugin SEO fazendo isso por você
Então, para add_theme_support()
adicionar suporte a temas para formatos de postagem, por exemplo, você usa a função em seu arquivo de funções:
Add_theme_support (‘pós-formatos’); |
Alguns dos recursos que você adiciona suporte de tema possuem parâmetros adicionais; Por exemplo, você pode especificar os formatos de postagem que você deseja usar ao adicionar suporte para eles:
Add_theme_support (‘post-formats’, array (‘aside’, ‘quote’)); |
E para as imagens apresentadas, você pode especificar quais tipos de postagem você deseja adicionar suporte para eles:
Add_theme_support (‘post-thumbnails’, array (‘post’, ‘page’)); |
Mas nada disso funcionará, a menos que você coloque seu código dentro de uma função que você anexe ao gancho correto, que é o after_setup_theme
gancho de ação. Você pode add_theme_support()
adicionar todas as suas funções dentro de uma função maior que você ganha after_setup_theme
. Então, se você quiser adicionar suporte de tema para miniaturas de postagem, formatos de publicação, HTML5 e links de alimentação automática, você adiciona isso ao arquivo de funções:
/ ***************************************************** ********************************* | |
Wpmu_theme_support – adiciona suporte de tema para formatos de publicação, miniaturas de publicação, HTML5 e links de alimentação automática | |
********************************************************** ********************************* | |
Função wpmu_theme_support () { | |
/ * Formatos de postagem * / | |
Add_theme_support (‘post-formats’, array (‘aside’, ‘quote’)); | |
/ * Post thumbnails * / | |
Add_theme_support (‘post-thumbnails’, array (‘post’, ‘page’)); | |
/ * HTML5 * / | |
Add_theme_support (‘html5’); | |
/ * Links de alimentação automática * / | |
Add_theme_support (‘feed-feed automático’); | |
} | |
Add_action (‘after_setup_theme’, ‘wpmu_theme_support’); |
Note que adicionei o texto comentado acima de cada item que adicionei suporte a tema, então, se eu ou qualquer outra pessoa voltar ao arquivo mais tarde, será fácil ver o que está acontecendo.
Adicionando um arquivo de tradução
Se as pessoas que não falam seu idioma provavelmente estarão trabalhandoem seu site ou usando seu tema, é uma boa prática tornar o seu tema pronto para a tradução . Isso não afeta a frente do seu site que os visitantes vêem, mas as telas de administração que seus usuários verão. A tradução significa que qualquer texto que você adicione às telas de administração através do seu tema será traduzido usando um arquivo de tradução.
Você diz ao WordPress que o arquivo de tradução do tema usando a load_theme_textdomain()
função em seu arquivo de funções, assim:
Função wpmu_translation () { | |
Load_child_theme_textdomain (‘wpmu-theme’, get_stylesheet_directory (). ‘/ Languages’); | |
} | |
Add_action (‘after_setup_theme’, ‘wpmu_translation’); |
Isso usa a get_template_directory()
função para encontrar o diretório do tema e, em seguida, procura um arquivo começando com wpmu-theme
o subdiretório de idiomas, então o caminho será wp-content/themes/mytheme/languages/
e o nome do arquivo de idiomas começará com wpmu-theme
seguido de um código para o idioma.
Se você precisa fazer o seu tema pronto para a tradução, você terá que fazer mais do que apenas carregar este domínio de texto – nosso guia completo para traduzir plugins também se aplica a temas e conta tudo o que você precisa saber.
Registro de menus de navegação
Outra coisa que você faz no seu arquivo de funções é registrar locais para menus de navegação. Se você estiver acostumado a trabalhar com temas de terceiros , você verá que muitos deles têm uma caixa de seleção Navegação Primária, você pode selecionar na tela de Administração de Menus, permitindo adicionar o menu que você cria nesse local no tema. Se você quiser que os usuários possam fazer isso no seu tema, então você precisará usar a register nav menus()
função:
Isso registra uma localização de menu, que será exibida na tela do administrador como Navegação primária e cuja ID é primária. Você então usa essa ID para exibir o menu no arquivo header.php do seu tema.
Tenho em atenção que eu fiz o nome da minha tradução de menu pronto no código acima, então qualquer pessoa que use meu tema que esteja trabalhando em um idioma diferente do inglês terá esse texto de “Navegação Primária” traduzido para eles usando meu arquivo de tradução.
Você também pode usar esta função para registrar várias localidades do menu de navegação. O código abaixo registra um menu principal, além de um adicional na barra lateral:
Novamente, você precisaria codificar o menu no sidebar.php
arquivo do seu tema , usando a wp_nav_menu()
função.
Puxando-o tudo junto
Entre vós o olhou águia-se ter visto que todas as funções que eu forneci acima são ativados através do mesmo gancho de acção: after_setup_theme
. Isso significa que, em vez de escrever uma série de funções separadas, você pode adicioná-las a uma função em seu arquivo functions.php e, em seguida, ativar isso usando o gancho de ação.
Vocês teriam uma grande função:
/ ***************************************************** ********************************* | |
Wpmu_theme_setup – configura temas | |
– adiciona suporte a temas para formatos de postagem, post thumbnails, HTML5 e links de alimentação automática | |
– registra um arquivo de tradução | |
– registra os menus de navegação | |
********************************************************** ********************************* | |
Função wpmu_theme_setup () { | |
/ ******************************* | |
Comece adicionando suporte a temas | |
******************************** | |
/ * Formatos de postagem * / | |
Add_theme_support (‘post-formats’, array (‘aside’, ‘quote’)); | |
/ * Post thumbnails * / | |
Add_theme_support (‘post-thumbnails’, array (‘post’, ‘page’)); | |
/ * HTML5 * / | |
Add_theme_support (‘html5’); | |
/ * Links de alimentação automática * / | |
Add_theme_support (‘feed-feed automático’); | |
/ ******************************* | |
Arquivo de tradução | |
******************************** | |
Load_child_theme_textdomain (‘wpmu-theme’, get_stylesheet_directory (). ‘/ Languages’); | |
/ ******************************* | |
Menus de navegação | |
******************************** | |
Register_nav_menus (array ( | |
‘Primary’ => __ (‘Primary Navigation’, ‘wpmu-theme’), | |
‘Sidebar’ => __ (‘Navegação na barra lateral’, ‘wpmu-theme’), | |
)); | |
} | |
Add_action (‘after_setup_theme’, ‘wpmu_theme_support’); |
Eu adicionei muitos comentários dentro da minha função, então eu sei o que está acontecendo onde. Isso tornará mais fácil se eu precisar editar ou substituir a função no futuro.
Incluindo arquivos
Às vezes, você encontrará seu arquivo de funções maior do que você pode gerenciar confortavelmente, e tem blocos de código que você deseja manter separadamente. Se isso acontecer, é uma boa idéia criar arquivos separados, chamados de arquivos de inclusão, para esse código e, em seguida, chamá-los do seu arquivo de funções.
Crie uma pasta no seu tema includes
e crie um novo arquivo php para cada bloco de código que deseja separar. Então, se eu quisesse mover a configuração do tema para outro arquivo, por exemplo, eu movi todo o código acima em um arquivo chamado theme_setup.php
e depois chamo-o no meu arquivo de funções:
Incluir (get_stylesheet_directory (). ‘/includes/theme_setup.php’); |
Isso chama o código no arquivo de inclusão e o executa no lugar no arquivo de funções onde adicionei isso include()
função. Eu tendem a colocar todos os meus itens no início do arquivo de funções, então eles são fáceis para eu encontrar, novamente com comentários para me dizer o que eles fazem.
Trabalhando com pais e filhos Temas
O arquivo de funções pode ser muito poderoso quando você está trabalhando com temas pai e filho. Em um tema infantil, você pode usar seu arquivo de funções para substituir ou remover funções do tema pai ou para adicionar novas.
Há três maneiras de substituir ou adicionar funções em um tema filho:
- Crie uma nova versão de uma função conectável.
- Desative uma função do tema pai.
- Adicione sua própria função, usando prioridade para substituir a função do tema pai.
Vamos dar uma rápida olhada em cada um deles por sua vez.
Funções em Pluggable
Se você está trabalhando com um tema pai bem codificado ou um quadro de tema para ser usado como um tema pai, então as chances são que as funções em seu arquivo de funções sejam conectáveis.
Você pode facilmente detectar um tema conectável, porque ele será envolvido em uma etiqueta condicional para verificar se essa função já existe, assim:
<? Php | |
Se ( ! Function_exists ( ‘ my_function ‘ )) { | |
Function my_function () { | |
// Conteúdo da sua função aqui. | |
} | |
} | |
? > |
Como as funções do tema filho são executadas antes das do tema pai, isso significa que, se você criar uma função com o mesmo nome no seu tema filho, o WordPress não executará o do tema pai. Então, para substituir o tema pai, basta criar sua própria função com o mesmo nome no arquivo de funções do seu filho.
Funções de desativação
Para desativar uma função, desanexá-la da ação ou do gancho de filtro que está anexado. Então, se o seu tema pai tem uma função chamada parent_function()
que é ativada através do init
gancho, você o desativa em seu tema infantil, assim:
Remove_action (‘init’, ‘parent_function’); |
Isso significará que a função pai não será mais executada. Em seguida, você pode escrever uma nova função se quiser funcionalidades diferentes no seu tema infantil – anexe-o ao mesmo gancho, mas não dê o mesmo nome.
Nota: se a função pai tiver um parâmetro de prioridade na add_action()
função que executa a função que deseja desativar, você deve incluir essa mesma prioridade quando a desativá-la. Eu irei às prioridades na próxima seção.
Usando a Prioridade de Função
A opção final é criar uma nova função com maior prioridade do que a função que deseja substituir, o que significa que ela será executada após essa função. Você deve fazer isso porque, por padrão, o WordPress executará as funções do seu tema infantil primeiro; Somente adicionando um número de prioridade você pode alterar isso.
Então, digamos que seu tema pai tem uma função chamada parent_function()
, que é ativada através do init
gancho com prioridade 20
:
Function parent_function () { | |
// Conteúdo para sua função aqui. | |
} | |
Add_action (‘init’, ‘parent_function’, 20); |
Você pode escrever uma função que a substitui e, em seguida, anexar essa ligação init
com uma prioridade mais alta, como 30
:
Function child_function () { | |
// Conteúdo para sua função aqui. | |
} | |
Add_action (‘init’, ‘child_function’, 30); |
Observe que, se a função principal não tiver uma prioridade atribuída, então ele usará o padrão que é 10. Então, você pode usar qualquer coisa superior a 10 para sua função filho para garantir que ela seja executada após a função pai.
O arquivo de funções é seu amigo
O arquivo de funções do tema funciona de forma muito semelhante a um plugin, mas é específico para o seu tema. Então, você só deve usá-lo para adicionar funcionalidades que você não deseja perder se você mudar de tema mais tarde ou que não deseja usar em outro site. Nesta publicação, você aprendeu o que o arquivo de funções é usado, bem como como implementar alguns desses usos. Trate seu arquivo de funções com cuidado, evite usá-lo em vez de um plugin e isso irá ajudá-lo no desenvolvimento de seu tema!
Como você usa o arquivo de funções? Você o evita por completo e usa plugins de código em vez disso? Deixe-nos saber nos comentários abaixo.