Desenvolvimento de temas Wordpress
Anotações úteis para o desenvolvimento de temas Wordpress.
- Recursos úteis para desenvolvimento Wordpress
- Repositório deste projeto no GitHub
- Ambiente de desenvolvimento com Docker Compose
- Como preparar o Wordpress para o desenvolvimento?
- Estrutura do sistema
- Como está organizado o banco de dados do Wordpress?
- Como funciona a hierarquia de tema Wordpress?
- Como começar a criar um tema Wordpress?
- Como preencher as informações do tema
- Desenvolvimento do layout
Recursos úteis para desenvolvimento Wordpress
Aplicativos
Servidores e ambiente
Para simular o funcionamento do Wordpress no ambiente de desenvolvimento local é necessário instalar aplicativos que irão atuar como servidores, pois como o Wordpress é feito em PHP, ele não pode ser executado localmente sem estes recursos.
Alguns exemplos de servidores que vem com um pacote completo necessário para rodar o Wordpress, instalar o banco de dados MySQL e administrá-lo através do PHPMyAdmin.
Se a escolha for não fazer toda esta configuração de servidores locais, uma boa opção é o aplicativo Local WP, que literalmente pode fazer quantas instalações do Wordpress forem solicitadas através de um botão e poucas configurações adicionais.
- Local WP - https://localwp.com/
A minha favorita é criar ambientes com Docker e Docker-Compose:
- Imagem original no Docker Hub - https://hub.docker.com/_/wordpress
- Minha imagem personalizada do docker-compose com o Wordpress, banco MariaDB e PHPMyAdmin - docker-compose.yml
Editores de texto
- VS Code - https://code.visualstudio.com/download
- Atom - https://atom.io/
- Sublime - https://www.sublimetext.com/
Wordpress e documentação
- Baixe o Wordpress - https://pt.wordpress.org/download/
- Suporte Wordpress - https://wordpress.org/support/
- Documentação (Codex) - https://codex.wordpress.org/Theme_Development
- Gerador de funções para Wordpress (Muito recomendado) - https://wp-skills.com/
Repositório deste projeto no GitHub
Se você está habituado a utilizar o GitHub, poderá acompanhar este projeto de estudo e baixá-lo no seu repositório do tema.
Ambiente de desenvolvimento com Docker Compose
Como o tema desenvolvimento não é o foco do meu conteúdo, mas o design em si, eu vou recomendar um vídeo que mostra na prática como configurar o ambiente Docker para o Wordpress. E mais abaixo vou disponibilizar a configuração que eu uso para desenvolvimento local.
Como configurar o ambiente de desenvolvimento com Docker para Wordpress
Minha configuração local
Para a minha configuração local, eu criei um documento docker-compose.yml com as seguintes configurações:
- Wordpress
- MySQL
- PHPMyAdmin
O repositório completo já está configurado com variáveis de ambiente.
Se você não sabe trabalhar com variáveis de ambiente, junto ao repositório eu envio um arquivo .env.example. Basta renomear para .env e preencher os campos que faltam. O arquivo deve estar na mesma pasta que o docker-compose.yml.
Dentro da pasta do repositório tem a pasta configs onde eu guardo algumas configurações importantes para o Wordpress, como a quantidade permitida para uploads de arquivos.
Acesse o repositorio.
Como preparar o Wordpress para o desenvolvimento?
Configurando WP_DEBUG para TRUE
Esta opção poderá ser ativada no arquivo wp_config.php que é gerado no momento da instalação na pasta raiz do sistema.
Na linha 72 ou perto dela estará uma constante PHP chamada "WP_DEBUG" que estará definida com false. Devemos mudar para true.
Lembrando que esta opção somente deve estar ativada no ambiente de desenvolvimento. Em produção a instalação deverá estar como false.
Ao manter esta opção com true, o sistema irá exibir informações na tela quando houver algum erro de código.
OBS: Se você fez a instalação usando o meu arquivo docker-compose.yml basta preencher a variável de ambiente no arquivo .env na hora de rodar o comando do Docker Compose.
Alguns plugins úteis para desenvolvimento Wordpress
- Fakerpress - preencherá o sistema com dados fake para melhorar a visualização no desenvolvimento. O site ficará cheio de conteúdo de teste. Não use em sites em produção.
- QueryMonitor - exibe em tela dados úteis do sistema e de consultas no banco de dados em tempo real. Um recurso muito útil é o de exibir os arquivos que estão sendo utilizados em cada tela.
- Regenerate Thumbnails - gera novamente as thumbnails no sistema, caso vc personalize as opções de tamanhos de imagens.
- Theme check - checa se o seu tema está dentro dos parâmetros da comunidade Wordpress.
Estrutura do sistema
Como está organizado o banco de dados do Wordpress?
Ao instalar o Wordpress, ele cria por padrão algumas tabelas necessárias no banco de dados MySQL. Esta é uma imagem do PHPMyAdmin, um sistema de gerenciamento de bancos de dados MySQL com as tabelas geradas pelo Wordpress em sua instalação.
Descrição das tabelas
Posts, Páginas e Menus
- wp_posts: todos os novos conteúdos inseridos no Wordpress são gravados nesta tabela. Não só os posts do blog, mas também as páginas, menus e posts customizados (Custom post type). A maneira como o Wordpress identifica cada tipo de conteúdo é justamente pela coluna "post_type" que vai armazenar a identificação sobre que tipo de conteúdo se trata a entrada, ou seja, poderá ser "post", "page", "menu", ou algum outro tipo de post customizado.
- wp_postmeta: identifica os posts no sistema e adiciona informações adicionais, como por exemplo, o template de exibição daquele post ou página.
Termos e taxonomias
- wp_terms: esta é a tabela que armazena todas os termos do sistema, como as categorias e tags e também as taxonomias customizadas.
- wp_term_taxonomy: armazena as descrições dos termos publicados.
- wp_termeta: informações extra sobre as taxonomias.
- wp_term_relationships: são os dados de relacionamentos entre os termos e os posts. Ou seja, como cada taxonomia se relacional com as publicações no blog.
Configurações
- wp_options: são as informações gerais do sistema, como por exemplo, a URL de instalação, o título do site, a descrição entre outras.
- wp_links: atualmente é um recurso descontinuado. (Para mais informações, visite a documentação oficial)
Usuários
- wp_users: armazena as informações de usuários cadastrados.
- wp_usermeta: informações adicionais sobre os usuários.
Comentários
- wp_comments: armazena os comentários dos visitantes do site.
- wp_commentmeta: armazena informações extras sobre os comentários.
Documentação oficial: Database Description
Como funciona a hierarquia de tema Wordpress?
Hierarquia de modelos Wordpress
O diagrama acima pode até parecer assustador, mas não é. Funciona assim:
OBS: Atualizado para a versão 6.0 em diante (10/06/2022)
Na primeira coluna a esquerda, temos basicamente os tipos de conteúdo de um tema Wordpress que são:
- Arquivo - is_archive()
- Página simples- is_singular()
- Página principal - is_frontpage()
- is_home()
- is_comment_popup()
- Página de busca - is_search()
- Página de erro - is_404()
Para entender o esquema de cores deste diagrama leve em conta esta parte da tabela:
Agora vamos a explicação...
Como funciona?
Apenas para exemplificar o básico, vamos mencionar as situações principais que podem ser percebidas neste diagrama:
- Página principal - quem já é usuário Wordpress sabe que existe uma configuração de como será a leitura do site, se será uma exibição de posts recentes ou uma página estática. Bom, na sua hierarquia será:
- Se ele estiver configurado para exibir uma página estática. irá buscar por front-page.php. Se ele não encontrar este arquivo, ou se o seu tema não o tiver, ele irá exibir o arquivo index.php da pasta raiz.
- Se ele estiver configurado para exibir os últimos posts, ele irá direto para o arquivo index.php.
- Página de pesquisa - buscará pelo arquivo search.php. Se não o encontrar, buscará por index.php.
- Página de erro - buscará pelo arquivo 404.php. Se não o encontrar, buscará por index.php.
- Arquivo - se for um arquivo, ele verificará que tipo de arquivo está sendo consultado (Ex: is_date(), is_category(), is_tag(), is_author(), is_tax(), is_post_type_archive(), etc...) E para cada caso, o tema pode fornecer uma exibição diferente por tipo de conteúdo, bastando neste caso que tenha uma arquivo para cada tipo.
- is_date() - date.php.
- is_category - category.php
- is_tag() - tag.php
- is_author() - author.php
- is_tax() (Taxonomia personalizada) - taxonomy.php
- is_post_type_archive() - archive-${tipo_de_post}.php (Ex. se eu tenho um Custom Post Type do tipo produto, o nome do arquivo será archive-produto.php)
- Caso o seu tema não tenha um modelo de arquivo para cada tipo de conteúdo, a exibição de arquivo irá buscar diretamente o archive.php. Caso não haja também, ele irá exibir o index.php.
- Agora, imagine o seguinte cenário:
- O seu tema tem vários tipo de categoria, mas o arquivo de uma das categorias deve ser exibido de forma diferente das demais. Por exemplo: o arquivo das categorias Notícias e Novidades terão um layout e o arquivo da categoria Artigos terá outro formato. Você pode criar o modelo category-${slug}.php que neste caso provavelmente seria category-artigos.php.
Seguindo estes exemplos acima, é possível entender toda a hierarquia de modelos nos temas Wordpress.
Documentação oficial: Hierarquia de Arquivos de Tema WordPress
Como começar a criar um tema Wordpress?
O básico para começar a criar um tema, após todas as configurações de ambiente estarem implementadas e o Wordpress já instalado em um servidor local, devemos acessar a pasta dos temas.
Hierarquia de pastas do Wordpress
- Pasta raiz da instalação
- /wp-admin
- Arquivos responsáveis pelo funcionamento do sistema
- /wp-content (Esta é a pasta de desenvolvimento, pois é a pasta responsável por armazenar todo o conteúdo, mídias e as informações do projeto.)
- /languages
- Armazena arquivos de idioma do sistema
- /plugins
- Pastas com os plugins instalados (Não necessariamente ativados)
- /themes <= Para este projeto, é nesta aqui que vamos trabalhar
- Pastas dos temas
- /upgrade
- /uploads
- Arquivos de mídia que subimos através da biblioteca de mídia.
- O sistema de pastas será formado em forma de hierarquia de data (ano > mês > arquivo):
- 2022
- 01
- imagem01.jpeg
- imagem02.jpeg
- imagem03.jpeg
- 02
- imagem01.jpeg
- imagem02.jpeg
- imagem03.jpeg
- 03
- imagem01.jpeg
- imagem02.jpeg
- imagem03.jpeg
- etc...
- 01
- 2022
- Outros arquivos do sistema
- /languages
- /wp-includes
- Arquivos de funcionalidades adicionais do sistema
- Demais arquivos de inicialização e configuração do sistema
- /wp-admin
Dentro da pasta de temas (/wp_content/themes) o básico para começar será:
- A pasta com o nome do tema (neste caso, escolhi wpDev)
- Um arquivo principal que deve se chamar index.php
- Uma folha de estilo que deve se chamar style.css
Apensa com isso já é possível visualizá-lo na área de temas do sistema e ativá-lo.
Mas é claro que não vamos conseguir ver nada na frente do site, porque estamos apenas começando.
Após isso deve colocar um arquivo chamado screenshot.png com o tamanho de 1200x900px na pasta raiz. Esta será a capa do tema.
Nada mal não é? Depois de colocar este arquivo screenshot.png e ativá-lo, veja como ficou. Note também que o Wordpress está exibindo o nome do tema como o nome da pasta que eu criei.
A seguir, o mais recomendado é modelar o front do site em um arquivo HTML. Depois, com o modelo pronto, podemos destrinchá-lo e ajustar aos padrões do Wordpress para deixá-lo dinâmico.
Como preencher as informações do tema
Acesso o codex Wordpress e busque por: Theme Stylesheet
Copie todas estas informações em forma de comentário. O Wordpress irá ler estes comentários e estas informações serão as informações do seu tema.
Copie e cole na sua folha de estilo (style.css). O exemplo a seguir é apenas com a finalidade de demonstração. Eu recomendo que você acesse o link acima e copie diretamente da documentação oficial, para se certificar de que estará utilizando o código mais atual.
/*
Theme Name: Twenty Thirteen
Theme URI: http://wordpress.org/themes/twentythirteen
Author: the WordPress team
Author URI: http://wordpress.org/
Description: The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small.
Version: 1.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: black, brown, orange, tan, white, yellow, light, one-column, two-columns, right-sidebar, flexible-width, custom-header, custom-menu, editor-style, featured-images, microformats, post-formats, rtl-language-support, sticky-post, translation-ready
Text Domain: twentythirteen
This theme, like WordPress, is licensed under the GPL.
Use it to make something cool, have fun, and share what you've learned with others.
*/
E veja como fica depois que eu colei na minha folha de estilo e preenchi com os dados corretos:
Desenvolvimento do layout
Bootstrap e estilização no Wordpress
Para começar a projetar o tema vou utilizar o Bootstrap na versão 4.6.
Depois disso, irei usar uma personalização do Bootstrap através do site Bootswatch.
Como instalar o Bootstrap no meu tema
Para isso eu preciso copiar a folha de estilo do Bootstrap que eu posso copiar direto do site, ou baixar e linkar direto da minha pasta do tema. Para este projeto eu preferi linkar direto com o servidor Bootstrap seguindo as orientações do próprio site do Bootstrap (neste link):
Clicando em "Copy" e adicionando no cabeçalho do meu arquivo index.php antes do fechamento da tag </head>. Ficou assim:
Também precisamos adicionar a biblioteca JQuery, Popper e o arquivo JavaScript do próprio Bootstrap. Estes nós adicionamos ao final antes de fechar a tag </body>. Veja a documentação:
E como ficou no código do tema:
Agora já estamos prontos para utilizar o Bootstrap no tema Wordpress, mas antes vamos personalizar o tema.
Personalizando o Bootstrap com o Bootswatch
Acesse o Bootswatch (clique aqui) e escolha uma das opções de personalização que ele oferece na sua página. Eu escolhi o tema Vapor, que eu achei bem estiloso. Você pode baixar a opção bootstrap.min.css pois já está minificada e isto ajuda no desempenho.
Daí, crie uma pasta /css e dentro dela o arquivo que foi baixado, daí é só chamá-lo no cabeçalho do index.php desta forma:
Agora sempre que quiser usar um componente Bootstrap, procure na aba Components do site do Bootstrap 4.6.
Todo o processo de desenvolvimento de layout deste tema será baseado no Bootstrap, então se você for acompanhar todo o desenvolvimento deste projeto, siga estas etapas para que você possa utilizar os mesmos componentes CSS.
Um DETALHE IMPORTANTE sobre folhas de estilo em pastas locais
Apenas por chamar a folha de estilo como na imagem acima, relacionada à instalação do Bootswatch, não irá trazer automaticamente a estilização no tema. Isto porque, como o arquivo está dentro da pasta do tema, nós precisamos usar uma função que irá identificar a pasta do tema como sendo a pasta raiz e o caminho relativo até a folha de estilo como o caminho que você apontou em seu arquivo index.php. Quando começarmos a usar as funções do Wordpress para deixar o tema dinâmico veremos como fazer esta configuração.
Mostro isso na prática nesta página.
HTML da página principal
Para começar a construir o tema Wordpress, eu escrevi um código simples para a página principal do site. No arquivo index.php que se encontra na pasta raiz do tema (para tirar qualquer dúvida sobre a estrutura de pastas de um tema Wordpress consulte esta página). Eu simplesmente simulei o que seria o cabeçalho do site, o rodapé, os menus e as áreas em que entrarão os widgets do Wordpress.
Para o corpo da página, eu fiz uma divisão simples de barra lateral usando as próprias classes do Bootstrap 4.6.
Segue o exemplo:
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">
<link rel="stylesheet" href="css/bootstrap.min.css" />
<title>Wordpress Dev</title>
</head>
<body>
<header>
<div class="container">
<div class="row">
<div class="col py-5 text-center">
<h1 class="mb-4">Wordpress Dev</h1>
<p>Projeto público de desenvolvimento de temas para o Wordpress</p>
</div>
</div>
</div>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<button class="navbar-toggler mx-auto" type="button" data-toggle="collapse" data-target="#navbarPrincipal" aria-controls="navbarPrincipal" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarPrincipal">
<ul class="navbar-nav mx-auto">
<li class="nav-item">
<a class="nav-link" href="#">Menu 1</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Menu 2</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Menu 3</a>
</li>
</ul>
</div>
</nav>
</header>
<main>
<div class="container">
<div class="row py-5">
<div class="col-md-9">
<article>
<h4>Este é o título de um artigo</h4>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris ullamcorper tellus in dolor mollis sagittis. Morbi at nibh lectus. Fusce tempor vel ipsum vitae maximus. Nulla eu placerat sapien. Fusce dignissim lectus sit amet quam condimentum, nec tempus massa auctor. Morbi suscipit blandit quam, ac aliquet tortor fermentum et.</p>
</article>
</div>
<div class="col-md-3">
<div class="widget mb-3">
<p>Este é um Widget</p>
</div>
<div class="widget mb-3">
<p>Este é um Widget</p>
</div>
</div>
</div>
</div>
</main>
<footer class="bg-dark w-100">
<div class="container">
<div class="row py-5 text-light">
<div class="col-md-4">
<h6>Widget 1</h6>
</div>
<div class="col-md-4">
<h6>Widget 2</h6>
</div>
<div class="col-md-4">
<h6>Widget 3</h6>
</div>
</div>
</div>
<div class="container border-top text-center text-light py-3">
<p class="mb-0">
<small>
Tema de estudo Wordpress | Desenvolvido por <a href="https://wiki.phototricks.art.br/books/desenvolvimento-de-temas-wordpress" target="_blank" class="text-light"><b>Phototricks</b></a>
</small>
</p>
</div>
</footer>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>
</body>
</html>
Inserindo as primeiras funções PHP no Wordpress
Para que o tema fique dinâmico e traga informações que foram inseridas através do painel de administração do Wordpress, é preciso inserir algumas funções PHP que já vem por padrão do Wordpress. Não é necessário ter conhecimento em PHP para trabalhar com estas funções. Eu por exemplo, não sou desenvolvedor PHP.
No entanto se você já tem conhecimento desta linguagem se sairá bem melhor.
Funções que vamos utilizar
"wp_head": esta função inserimos antes do fechamento da tag </head>. Esla injeta no nosso código algumas folhas de estilo, scripts e outras informações que vem do Wordpress, Como o título do site e as meta tags. Isso quer dizer, que se você instalar algum plugin que precisa acessar o cabeçalho do seu site, para trabalhar o SEO, por exemplo, como o Yoast SEO, ele terá acesso através desta função. Assim o trecho de código que estava usando até agora: <title>Wordpress Dev</title>, não será mais necessário, pois essa informação virá de forma dinâmica da administração.
Veja como inserir esta função:
Veja como ficou no meu código:
"language_attributes": trás as opções de idioma que o administrador selecionou nas opções do Wordpress. Esta se usa dentro das opções da tag de abertura do html: <html > como na imagem abaixo:
"blog_info": esta função é utilizada com parâmetros adicionais. Ela é bastante utilizada, pois ela trás informações úteis sobre o nosso site. Alguns exemplos de parâmetros:
- 'pingback_url': esta é o parâmetro que configura corretamente os pingbacks no conteúdo do site. Se você não sabe o que é um pingback, recomendo que leia este artigo. Veja como utilizar:
- 'name' e 'description': estes parâmetros trazem o nome e a descrição do site.
Injetando funções PHP no código
Se você não está familiarizado com PHP, entenda como injetar as funções no tema Wordpress:
- <?php - abrimos uma tag sinalizando que o que vamos inserir é a linguagem PHP.
- wp_head(); - a função em si. No Wordpress as funções começam com "wp_" por padrão. Quando você abre e fecha parêntesis, é porque algumas dessas funções recebem parâmetros e configurações adicionais dentro delas, como no caso da 'bloginfo'. Já outras não necessitam configurações adicionais, como a "wp_head". Seja como for, a documentação do Wordpress fornece detalhes sobre as funções e como usar cada uma delas.
- ?> - após a chamada da função, é necessário fechar a tag PHP para informar que o código a seguir já não será mais executado em PHP.
Hooks (ganchos) do Wordpress
Quando o site Wordpress está carregando, ele vai executando alguns eventos dentro da sua programação. Esses eventos são o que determina o seu funcionamento e a ordem em que ocorrem as execuções no sistema.
Nós podemos alterar os arquivos do sistema Wordpress em si, porém, toda vez que ele atualizar, ele irá sobrescrever os seus arquivos de sistema, ou seja, os que estão na pasta raiz e que carregam o sistema em si. No caso, o core do sistema, o Wordpress puro, sem contar a pasta de conteúdo, arquivos, plugins instalados e temas, que fica em /wp-content.
Assim, uma forma de acessar o sistema de dentro da pasta do tema que estamos criando, é por meio dos hooks ou ganchos, que permanecem inalterados, mesmo como atualizações e reinstalações do Wordpress.
Veja a documentação oficial dos hooks Wordpress.
Como usar os hooks
Até a versão 6 os hooks podem ser do tipo 'action' ou 'filter'. Esta é a sintaxe para usá-los:
add_action( 'nome-da-action', 'funcao-a-executar', 'prioridade', 'argumentos' );
Acima, um exemplo de action. A estrutura de um filter seria a mesma, com a diferença de que a função a ser executada sempre deve retornar um valor, e sempre vai esperar ao menos um argumento para sua execução.
add_filter( 'nome-da-action', 'funcao-a-executar', 'prioridade', 'argumentos' );
Para este momento, o único que vamos fazer é criar um arquivo na pasta raiz do tema com o nome de functions.php. Este arquivo é padrão para temas Wordpress, e será aqui que vamos configurar as funções do tema.
O arquivo functions.php
Os primeiros hooks que eu adicionei no arquivo de funções do tema, são algumas configurações básicas iniciais que todo o tema Wordpress deve ter. Para isso eu adicionei a action que trás uma função de carregamento junto com o tema, after_setup_theme. Com este hook eu consigo chamar uma função que eu criei, chamada de phototricks_setup_theme, em que eu adiciono todo o suporte ao tema através de várias outras funções padrão do Wordpress. Veja o código com a explicação de cada uma das funções:
<?php // Abre a tag PHP
function phototricks_setup_theme() { // Minha função personalizada
$supports = [
'search-form',
'comment-form',
'comment-list',
'gallery',
'caption'
]; // Array com algumas tags do html 5 que eu quero que o meu tema tenha suporte
add_theme_support('html5', $supports); // Suporte para html 5
add_theme_support('title-tag'); // Quero usar a tag title no título das páginas do site (dentro da <head>)
add_theme_support('post-thumbnails'); // Suporte para adicionar imagens de capa nas páginas e posts
add_theme_support('automatic-feed-links'); // Geração automática de links para leitores de Feed RSS
$GLOBALS['content_width'] = 1130; // Largura total do conteúdo, para o ajuste de imagens e vídeos incorporados
}
add_action('after_setup_theme', 'phototricks_setup_theme'); // Chamada da função personalizada com as configurações de suporte do tema
function phototricks_enqueue_scripts() {
wp_enqueue_style('phototricks-style', get_stylesheet_directory_uri() . '/css/bootstrap.min.css'); // Adição dinâmica da folha de estilo personalizada do tema
}
add_action('wp_enqueue_scripts', 'phototricks_enqueue_scripts'); // Chamada para a função de configuração da folha de estilo personalizada
Veja que agora, tornamos o carregamento da folha de estilo dinâmica, assim finalmente, o tema não está somente acessando o Bootstrap 4.6 online, mas também o arquivo local de estilização do Bootstrap que está na pasta css do tema:
Adicionando suporte para vários idiomas (internacionalização) no tema Wordpress
Em resumo o que devemos fazer é criar vários pacotes de idioma para que o tema possa ser apresentado em vários idiomas, conforme a configuração do sistema.
Nós fazemos isso por meio de algumas configurações no arquivo functions.php, por chamadas de funções PHP no html do site e com a ajuda de um plugin que irá gerar as tabelas de tradução numa pasta do tema que definiremos para isto.
Configurações no functions.php
Até agora, eu já criei uma função no arquivo functions.php que carrega configurações de suporte do Wordpres no tema. Você pode verificar isso aqui. Dentro desta função, eu vou adicionar uma outra função padrão que dirá para o Wordpress qual é o domínio do meu tema. Ele deve ser uma palavra exclusiva que identifique o tema que estamos fazendo para o Wordpress.
Para isso vou começar fazendo um ajuste no style.css da pasta raiz do tema. No comentário que colocamos neste arquivo tem uma entrada Text Domain: que eu vou ajustar para phototricks. Já vai ficar claro o porquê disso.
Agora, vou adicionar a função de internacionalização no carregamento do tema. Ela ficou assim:
load_theme_textdomain( 'phototricks', get_template_directory() . '/languages' );
A função load_theme_textdomain informa ao Wordpress qual é o domínio do tema e vincula o tema à sua pasta de traduções. A função get_template_directory trás o caminho da pasta raiz do tema, assim eu concatenei com a pasta /languages que eu criei para guardar as traduções. Veja como ficou a função:
Para mais informações eu criei esta função na página de hooks.
Aplicando as traduções
Vamos traduzir o texto que eu inseri no rodapé do site: "Tema de estudo Wordpress | Desenvolvido por Phototricks".
No lugar onde está o texto que eu quero que haja várias traduções, no arquivo index.php, vou substituir pelo seguinte código:
<?php _e( 'Wordpress Study Theme | Developed by', 'phototricks' ); ?> // O texto default em inglês, seguido do domínio do tema (o mesmo em functions.php e style.css)
Agora, no rodapé do site, eu já verei o texto default, em inglês. Veja:
Adicionando os pacotes de tradução
Vou usar o plugin Loco Translate para gerar automaticamente os pacotes de tradução.
Após instalado eu entro na página do plugin, seleciono temas e seleciono o meu tema. Daí, eu clico em Criar modelo. Veja abaixo:
Isso vai fazer com que ele crie um modelo de tradução na pasta que já configuramos, a pasta /language. Veja:
Agora, voltamos às configurações deste plugin e escolhemos a opção Novo idioma.
Escolhemos o idioma que vamos inserir, e no local do arquivo escolhemos a opção de tema, pois dessa forma, quando o tema for finalizado, as opções de idioma estarão dentro de sua pasta. Quando ele for instalado em outro local, levará junto estas configurações.
Agora eu posso procurar os textos que marcamos com o domínio 'phototricks' e criar as traduções. Veja que o texto do rodapé já aparece aqui, agora, basta inserir o texto traduzido:
Agora, para todos os trechos de texto que eu quero que estejam sincronizados com a tradução do Wordpress, eu tenho que seguir o mesmo padrão que eu usei no texto do rodapé do site.
Adicionando Widgets ao tema Wordpress
Em breve