Esse post originalmente era de 2011, dei uma atualizada no conteúdo com alguns novos recursos e correções. Trabalhando com WordPress você tem um arquivo para cada situação específica, por exemplo, o arquivo responsável pela página de categoria é o arquivo category.php, ou page.php para uma página, ou 404.php quando o conteúdo não for encontrado, assim como para página single.
Como funciona a estrutura de páginas singulares
Quando tratamos de post o arquivo mais específico é o single.php
, porque o mais específico? Caso o single.php
não exista o index.php será responsável por exibir o conteúdo da página single ou o mais novo arquivo de template singular.php ele foi introduzido na versão 4.3 do WordPress para exibir o conteúdo de um post ou uma página. A imagem abaixo representa a ordem de carregamento:
Mas além dessas opções também podemos criar um arquivo para a página singular de cada categoria, mas isso só é possível com trabalhando com três métodos diferentes: trabalhando com filtros, trabalhando com plugin ou trabalhando com condicional tags.
Como adicionar código no WordPress?
Primeiramente, se iremos realizar uma alteração em produção precisamos realizar um backup da nossa aplicação. Especialmente se você não está familiarizado com código.
A opção mais simples é alterando o código do functions.php
esse processo é válido quando você possui um tema que não tem atualizações constantes. Caso contrário um tema filho ou um plugin será a melhor opção, porque as suas alterações não serão afetadas caso o tema principal seja atualizado.
Carregando diferentes templates com add_filter
A primeira forma é adicionando um filtro para isso devemos adicioná-lo dentro do functions.php, o código ficará da seguinte forma:
add_filter('single_template', 'create_single_template');
function create_single_template( $template ) {
global $post;
$categories = get_the_category();
// caso não tenhamos categoria retornamos o template default.
if ( ! $categories )
return $template;
//resgatando o post type
$post_type = get_post_type( $post->ID );
$templates = array();
foreach ( $categories as $category ) {
// adicionando templates por id e slug
$templates[] = "single-{$post_type}-{$category->slug}.php";
$templates[] = "single-{$post_type}-{$category->term_id}.php";
}
// adicionando os templates padrões
$templates[] = "single-{$post_type}.php";
$templates[] = 'single.php';
$templates[] = 'singular.php';
$templates[] = 'index.php';
return locate_template( $templates );
}
Code language: PHP (php)
Explicando código acima, aplicamos um filtro quando o WordPress chama o template para exibir um post, esse código é maior que a versão anterior desse post(2011), por duas razões continuamos retornando um comportamento padrão e segundo realizamos um tratamento para não sobrescrever a página singular de um post type.
Exemplo, caso tenhamos uma categoria filme e um post type filme não termos conflito, pois a página única da categoria ‘filmes’ será single-post-filmes.php
e a single do post type ‘filmes’ será single-filmes.php.
Carregando diferentes templates single com Plugin
Alterar functions.php de forma errada pode afetar o funcionamento do todo o seu tema, para evitar problemas caso não domine muito programação a segunda forma é utilizando plugin, ainda sim, você precisará de noções de programação para criar o novo template a diferença que qualquer erro afetará somente a página singular que você estará criando.
Temos várias opções de plugins os passos serão bem parecidos, vou listar o plugin com atualizações mais recentes o Custom Post Template By Templatic:
- Baixe o plugin e instale o plugin na sua aplicação.
- Ative o plugin
- Crie um novo template para sua página singular com um comentário no início do seu arquivo:
<?php
/*
PostType Page Template: [Nome para descrever seu template]
Description: [Essa parte é opcional]
*/
?>
Code language: HTML, XML (xml)
Esse comportamento é bem parecido como template pages, nesse caso o nome do arquivo é irrelevante pode ser qualquer um. Feito isso se tudo ocorrer bem um dropdown irá aparecer na sua página de edição de posts para selecionar o template desejado.
Trabalhando com tags condicionais
A terceira forma é trabalhando com tags condicionais, elas são funções que funcionam como perguntas lógicas que retornam true ou false, para nossa solução iremos trabalhar com in_category()
, para o nosso código não ficar extenso podemos dentro do nosso loop utilizar get_template_part
como no exemplo abaixo:
// dentro do loop
if ( in_category( 'filmes' ) ) {
get_template_part( 'template-parts/content', 'filmes' );
} else {
get_template_part( 'template-parts/content', 'post' );
}
Code language: JavaScript (javascript)
O código acima inserimos dentro do nosso single.php
não criamos um template novo para toda a nossa página singular e sim um pequeno bloco que será incluído pela função get_template_part
, caso o post seja da categoria “filmes” ele ira buscar na pasta template-parts o arquivo “content-filmes.php” nele você irá realizar a personalização que você deseja, caso contrário carregamos o arquivo content-post.php um trecho genérico para outras categorias.
Mais informações sobre conditional tags
: http://codex.wordpress.org/Conditional_Tags
Mais artigos relacionados
- 5 dicas de SEO para WordPress
- Push Notifications em sites WordPress com OneSignal
- 5 dicas de segurança para WordPress
Videos sobre WordPress em meu canal
Confira também os vídeos sobre WordPress no meu canal, lá eu tenho uma playlist dedicada a WordPress, com dicas relacionadas a SEO, performance e desenvolvimento de blocos gutenberg.
Qualquer dúvida só deixar um comentário para mais tutoriais sobre WordPress acesse a página da categoria. Até o próximo post pessoal!
Deixe um comentário para Alessandra Cancelar resposta