15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar
22.10.2024

Hierarquia de Templates WordPress: O Guia Técnico Completo

A Hierarquia de Templates do WordPress é o sistema de resolução determinístico que o WordPress usa para selecionar qual arquivo de template PHP renderiza uma determinada solicitação de página. Quando um visitante carrega qualquer URL no seu site, o WordPress avalia o contexto da consulta — tipo de post, taxonomia, slug, ID e mais — e percorre uma lista priorizada de nomes de arquivos candidatos até encontrar uma correspondência no diretório do tema ativo. Se nenhum template específico existir, ele recorre a index.php.

Compreender este sistema em profundidade não é opcional para o desenvolvimento sério em WordPress. É a base de cada layout personalizado, cada substituição de tema e cada otimização de desempenho envolvendo cache de templates. Seja você executando uma publicação com muito conteúdo, uma loja WooCommerce ou uma configuração WordPress headless, a hierarquia governa qual PHP é executado em cada carregamento de página.

O Que é Realmente a Hierarquia de Templates

Em sua essência, a Hierarquia de Templates é uma cadeia de pesquisa incorporada no núcleo do WordPress (wp-includes/class-wp-query.php e wp-includes/template.php). Quando o WordPress termina de analisar a solicitação e preencher o objeto global $wp_query, ele chama equivalentes de get_template_part() internamente para resolver o template correto. A resolução não é aleatória — é uma lista estrita e ordenada de nomes de arquivos verificados no diretório raiz do seu tema.

O principal insight arquitetônico que a maioria dos tutoriais perde: o WordPress não escaneia o diretório do seu tema. Ele constrói um array priorizado de nomes de arquivos candidatos com base nas variáveis de consulta e, em seguida, verifica cada arquivo usando locate_template(). Essa distinção importa quando você está depurando templates ausentes ou construindo geradores de temas programáticos.

A cadeia de fallback sempre termina em index.php. Este arquivo é o único arquivo de template que o WordPress exige que todo tema inclua, de acordo com os padrões de desenvolvimento de temas.

Arquivos de Template Principais Que Todo Tema Deve Compreender

Arquivo de TemplateAcionado QuandoFallback Para
front-page.phpA página inicial estática está definida em Configurações > Leiturahome.php
home.phpPágina de índice de posts do blogindex.php
single-{post-type}.phpPost único de um tipo de post personalizado específicosingle.php
single.phpQualquer post único (tipo de post padrão)singular.php
singular.phpQualquer post ou página única (catch-all genérico)index.php
page-{slug}.phpUma página específica por slugpage-{ID}.php
page-{ID}.phpUma página específica por ID do banco de dadospage.php
page.phpQualquer página estáticasingular.php
category-{slug}.phpArquivo de categoria por slugcategory-{ID}.php
category-{ID}.phpArquivo de categoria por ID do termocategory.php
category.phpQualquer arquivo de categoriaarchive.php
tag-{slug}.phpArquivo de tag por slugtag-{ID}.php
tag.phpQualquer arquivo de tagarchive.php
taxonomy-{tax}-{term}.phpTaxonomia personalizada, termo específicotaxonomy-{tax}.php
taxonomy-{tax}.phpTaxonomia personalizada, qualquer termotaxonomy.php
taxonomy.phpQualquer arquivo de taxonomia personalizadaarchive.php
author-{nicename}.phpArquivo de autor por nicename do utilizadorauthor-{ID}.php
author-{ID}.phpArquivo de autor por ID do utilizadorauthor.php
author.phpQualquer arquivo de autorarchive.php
archive-{post-type}.phpArquivo de tipo de post personalizadoarchive.php
archive.phpQualquer arquivo (data, autor, taxonomia)index.php
date.phpArquivo baseado em dataarchive.php
search.phpPágina de resultados de pesquisaindex.php
404.phpNenhum conteúdo correspondente encontradoindex.php
attachment.phpPágina de anexo únicosingle.php
embed.phpFrame oEmbed para um postindex.php
index.phpFallback universal

Observe a entrada singular.php — este é um template que muitos desenvolvedores ignoram completamente. Introduzido no WordPress 4.3, ele fica entre single.php/page.php e index.php na hierarquia, atuando como um catch-all unificado para qualquer visualização de conteúdo singular. Se o seu tema incluir singular.php, ele capturará casos onde nem single.php nem page.php existem.

A Ordem Completa de Resolução de Templates por Tipo de Página

Posts Únicos do Blog

Quando um visitante solicita um post padrão (post_type = 'post'), o WordPress verifica nesta ordem exata:

    single-post-{slug}.php (WordPress 4.4+, ex., single-post-hello-world.php)
    single-post.php
  1. single.php
  2. singular.php
  3. index.php

A variante baseada em slug no passo 1 raramente é documentada, mas é extremamente útil para dar a um único post principal um layout completamente único sem tocar em nenhum outro template.

Tipos de Posts Personalizados

Para um tipo de post personalizado registado como portfolio:

  1. single-portfolio-{slug}.php
  2. single-portfolio.php
  3. single.php
  4. singular.php
  5. index.php

Para o seu arquivo (requer 'has_archive' => true em register_post_type()):

  1. archive-portfolio.php
  2. archive.php
  3. index.php

Um erro comum: registar um tipo de post personalizado com 'has_archive' => false (o padrão) e depois perguntar por que archive-portfolio.php nunca carrega. A URL do arquivo simplesmente retorna um 404 nesse caso.

Páginas Estáticas

  1. Arquivo de template definido via caixa de meta Atributos de Página (template de página personalizado)
  2. page-{slug}.php
  3. page-{ID}.php
  4. page.php
  5. singular.php
  6. index.php

Templates de página personalizados são arquivos PHP no diretório do seu tema que incluem um comentário de cabeçalho de arquivo:

<?php
/**
 * Template Name: Full Width Layout
 * Template Post Type: page
 */

A declaração Template Post Type (WordPress 4.7+) restringe quais tipos de posts podem usar este template no editor. Sem ela, o template aparece no menu suspenso de Atributos de Página apenas para páginas.

Arquivos de Categoria

  1. category-{slug}.php
  2. category-{ID}.php
  3. category.php
  4. archive.php
  5. index.php

Arquivos de Taxonomia Personalizada

Para uma taxonomia registada como genre com um slug de termo thriller:

  1. taxonomy-genre-thriller.php
  2. taxonomy-genre.php
  3. taxonomy.php
  4. archive.php
  5. index.php

Arquivos de Autor

  1. author-{user_nicename}.php
  2. author-{user_ID}.php
  3. author.php
  4. archive.php
  5. index.php

A Página Inicial (Caso Crítico)

Esta é a parte mais incompreendida da hierarquia. O WordPress distingue entre dois cenários de página inicial:

Cenário A — Índice de posts do blog como página inicial (Configurações > Leitura: "Seus posts mais recentes"):

  1. front-page.php
  2. home.php
  3. index.php

Cenário B — Página estática como página inicial (Configurações > Leitura: "Uma página estática"):

  1. front-page.php
  2. page.php (se não existir front-page.php)
    index.php

O detalhe crítico: front-page.php tem precedência em ambos os cenários. Se front-page.php existir no seu tema, ele sempre renderiza a página inicial independentemente das configurações de Leitura. Isso surpreende muitos desenvolvedores que criam front-page.php para uma página inicial estática, mas esquecem que ele também substituirá o índice do blog se eles alterarem a configuração posteriormente.

Resultados de Pesquisa e 404

Resultados de pesquisa:

  1. search.php
  2. index.php

Páginas de erro 404:

  1. 404.php
  2. index.php

Um 404.php bem elaborado é um ativo de conversão, não uma reflexão tardia. Deve incluir um formulário de pesquisa, links para conteúdo popular e navegação clara — tudo o que requer compreensão do sistema de templates para implementar corretamente.

Como o WordPress Resolve Templates Internamente

Compreender a mecânica interna ajuda ao depurar ou estender o sistema. O processo de resolução em wp-includes/template.php funciona da seguinte forma:

// Simplified representation of WordPress template resolution
function get_query_template( $type, $templates = array() ) {
    $type = preg_replace( '|[^a-z0-9-]+|', '', $type );

    if ( empty( $templates ) ) {
        $templates = array( "{$type}.php" );
    }

    // Fires before template resolution — allows plugins/themes to modify the list
    $templates = apply_filters( "_{$type}_template_hierarchy", $templates );

    $template = locate_template( $templates );

    // Fires after template is located — allows final override
    $template = apply_filters( "{$type}_template", $template, $type, $templates );

    return $template;
}

Dois hooks de filtro são críticos aqui:

    _{$type}_template_hierarchy — dispara antes da pesquisa de arquivo, permitindo que você injete candidatos adicionais no array
    {$type}_template — dispara depois que o arquivo é localizado, permitindo que você substitua o caminho do template resolvido completamente
    
    Esses hooks são como plugins de page builder, redes multisite e WooCommerce substituem templates sem tocar nos arquivos do tema.
    Substituindo Programaticamente a Hierarquia de Templates
    Injetando um Caminho de Template Personalizado
    add_filter( 'single_template_hierarchy', function( $templates ) {
        // Prepend a plugin-directory template before theme templates are checked
        if ( is_singular( 'portfolio' ) ) {
            array_unshift( $templates, plugin_dir_path( __FILE__ ) . 'templates/single-portfolio.php' );
        }
        return $templates;
    } );
    Substituindo um Template Após a Resolução
    add_filter( 'template_include', function( $template ) {
        if ( is_singular( 'portfolio' ) && current_user_can( 'edit_posts' ) ) {
            // Load a debug template for editors
            $debug_template = get_stylesheet_directory() . '/debug/single-portfolio-debug.php';
            if ( file_exists( $debug_template ) ) {
                return $debug_template;
            }
        }
        return $template;
    } );
    O filtro template_include é o último hook antes do WordPress carregar o arquivo de template. Ele recebe o caminho totalmente resolvido e deve retornar um caminho de arquivo válido.
    Partes de Template e a Função get_template_part()
    As partes de template são fragmentos PHP reutilizáveis carregados via get_template_part(). Elas seguem sua própria mini-hierarquia:
    // Loads content-video.php if it exists, falls back to content.php
    get_template_part( 'template-parts/content', 'video' );
    O WordPress 5.5 adicionou um terceiro parâmetro para passar dados para partes de template:
    get_template_part( 'template-parts/card', 'product', array(
        'post_id' => get_the_ID(),
        'show_price' => true,
    ) );
    Dentro da parte de template, recupere esses dados com:
    $args = wp_parse_args( $args, array(
        'post_id'    => 0,
        'show_price' => false,
    ) );
    Isso elimina a necessidade de usar variáveis globais para passar dados entre templates — uma melhoria significativa para manutenibilidade e testabilidade.
    Temas Filhos e o Sistema de Substituição de Templates
    Os temas filhos estendem a hierarquia ao adicionar o diretório do tema filho ao início do caminho de pesquisa de templates. Quando locate_template() é executado, ele verifica:
    
    Diretório do tema filho (get_stylesheet_directory())
    Diretório do tema pai (get_template_directory())
    
    Isso significa que você pode substituir qualquer template do tema pai criando um arquivo com o nome idêntico no seu tema filho. Você não precisa copiar o arquivo inteiro — apenas as partes que deseja alterar — mas o WordPress carrega o arquivo como uma unidade completa, portanto você deve incluir toda a marcação necessária.
    Erro comum em temas filhos: Copiar functions.php do tema pai para o tema filho e esperar que ele substitua as funções do pai. Ao contrário de outros arquivos de template, functions.php em um tema filho é carregado além do functions.php do pai, não em vez dele. Ambos os arquivos são executados.
    Para criar uma estrutura mínima de tema filho:
    my-child-theme/
    ├── style.css          (required — contains theme header comment)
    ├── functions.php      (optional — enqueue parent styles here)
    └── single-post.php    (overrides parent's single-post.php)
    O cabeçalho style.css deve declarar o pai:
    /*
     Theme Name: My Child Theme
     Template: parent-theme-directory-name
    */
    Depurando Qual Template Está Ativo
    Método 1: Plugin Query Monitor
    O plugin Query Monitor (gratuito, WordPress.org) exibe o arquivo de template resolvido e a hierarquia completa de candidatos no painel da barra de ferramentas do administrador. Esta é a ferramenta de depuração mais confiável disponível e adiciona sobrecarga negligenciável.
    Método 2: O Hook template_include
    add_filter( 'template_include', function( $template ) {
        if ( current_user_can( 'manage_options' ) ) {
            echo '<!-- Template: ' . esc_html( str_replace( ABSPATH, '', $template ) ) . ' -->';
        }
        return $template;
    } );
    Isso exibe o caminho do template como um comentário HTML visível apenas para administradores. Remova-o antes de implantar em produção.
    Método 3: WP_DEBUG e Registro
    Em um servidor de desenvolvimento, ative o registro de depuração em wp-config.php:
    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_LOG', true );
    define( 'WP_DEBUG_DISPLAY', false );
    Em seguida, adicione registro temporário dentro de template_include:
    add_filter( 'template_include', function( $template ) {
        error_log( 'Resolved template: ' . $template );
        return $template;
    } );
    Em um ambiente de VPS Hosting com acesso root, você pode monitorar o log de depuração em tempo real:
    tail -f /var/www/html/wp-content/debug.log
    Esta abordagem é muito mais confiável do que depender de ferramentas de depuração baseadas em navegador ao solucionar problemas de resolução de templates em um servidor ativo ou de staging.
    WooCommerce e o Sistema de Substituição de Templates
    O WooCommerce vem com sua própria hierarquia de templates que fica sobre o sistema nativo do WordPress. Os templates do WooCommerce ficam em wp-content/plugins/woocommerce/templates/ e são carregados via sua própria função wc_get_template(), que verifica substituições em:
    
    wp-content/themes/your-theme/woocommerce/
  • wp-content/themes/your-child-theme/woocommerce/
  • Diretório de templates do próprio plugin
  • Para substituir o template de produto único do WooCommerce, copie woocommerce/templates/single-product.php para your-theme/woocommerce/single-product.php. Nunca edite os arquivos de template do plugin diretamente — eles são sobrescritos em cada atualização do plugin.

    O WooCommerce também se conecta aos hooks de ação woocommerce_template_single_*, o que lhe dá controle granular sobre seções individuais (preço, abas, botão adicionar ao carrinho) sem substituir arquivos de template inteiros. Esta é a abordagem preferida para modificações menores.

    Temas de Blocos e a Hierarquia de Templates na Edição Completa do Site

    O WordPress 5.9 introduziu a Edição Completa do Site (FSE) com temas de blocos, o que muda como a hierarquia de templates funciona na prática. Os temas de blocos armazenam templates como arquivos HTML em um diretório templates/ em vez de arquivos PHP:

    my-block-theme/
    ├── templates/
    │   ├── index.html
    │   ├── single.html
    │   ├── page.html
    │   ├── archive.html
    │   └── 404.html
    ├── parts/
    │   ├── header.html
    │   └── footer.html
    └── theme.json

    A lógica de resolução segue as mesmas regras de hierarquia, mas o WordPress agora também verifica o banco de dados para templates personalizados pelo utilizador salvos via o Editor do Site. A ordem de pesquisa torna-se:

    1. Template salvo pelo utilizador no banco de dados (tipo de post wp_template)
    2. Arquivo HTML do diretório templates/ do tema
    3. Arquivo HTML do diretório templates/ do tema pai
    4. Templates de fallback integrados do WordPress

    Temas PHP clássicos e temas de blocos podem coexistir em uma instalação WordPress, mas você não pode misturar templates PHP e templates de blocos HTML dentro de um único tema. Se o seu tema tiver um diretório templates/ e um theme.json válido, o WordPress o trata como um tema de blocos.

    Para equipes que executam cargas de trabalho críticas de desempenho em Servidores Dedicados, compreender essa distinção é essencial ao avaliar frameworks de temas — os temas de blocos transferem a renderização de templates para o analisador de blocos, que tem características de cache diferentes da execução de templates PHP.

    Implicações de Desempenho da Hierarquia de Templates

    Cada resolução de template envolve verificações do sistema de arquivos via locate_template(). Em um site com muito tráfego, isso pode adicionar sobrecarga mensurável se não for armazenado em cache. Principais otimizações:

    Cache de objetos: Use um cache de objetos persistente (Redis ou Memcached) para armazenar em cache os resultados de WP_Query e reduzir o número de consultas ao banco de dados que alimentam a seleção de templates.

    OPcache: Certifique-se de que o PHP OPcache está ativado e configurado corretamente. Como os templates são arquivos PHP, o OPcache os compila para bytecode no primeiro carregamento e serve as solicitações subsequentes a partir da memória. Em um VPS com cPanel devidamente configurado, o OPcache normalmente está ativado por padrão, mas pode exigir ajuste de opcache.memory_consumption e opcache.max_accelerated_files para temas grandes com muitos arquivos de template.

    Evite arquivos de template desnecessários: Cada arquivo de template no diretório do seu tema é um candidato que locate_template() deve verificar. Temas com centenas de arquivos de template (comuns em temas comerciais inchados) aumentam o I/O do sistema de arquivos em cada solicitação sem cache. Audite seu tema e remova templates não utilizados.

    Cache de página completa: Ferramentas como WP Rocket, W3 Total Cache ou cache no nível do servidor (cache FastCGI do Nginx, Varnish) ignoram completamente a execução de templates PHP para utilizadores anônimos. A resolução da hierarquia de templates só é executada quando o cache falha.

    Padrões Práticos de Personalização

    Padrão 1: Layout Específico de Categoria Sem um Plugin

    Crie category-news.php no diretório do seu tema. O WordPress o usa automaticamente para o arquivo da categoria “news”. Sem plugin, sem hook de filtro — apenas um arquivo com o nome correto.

    <?php
    /**
     * Template for the "news" category archive.
     * Inherits from: category.php → archive.php → index.php
     */
    get_header();
    ?>
    <main class="news-archive">
        <h1><?php single_cat_title(); ?></h1>
        <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
            <?php get_template_part( 'template-parts/card', 'news' ); ?>
        <?php endwhile; endif; ?>
        <?php the_posts_pagination(); ?>
    </main>
    <?php get_footer(); ?>

    Padrão 2: Layout Por Autor para Colaboradores em Destaque

    // author-jane-smith.php — loads only for the author with nicename "jane-smith"
    get_header();
    ?>
    <div class="featured-author-layout">
        <?php get_template_part( 'template-parts/author', 'featured' ); ?>
        <!-- Custom bio section, social links, etc. -->
    </div>
    <?php get_footer(); ?>

    Padrão 3: Lógica Condicional Dentro de index.php

    Se você está construindo um tema mínimo e quer evitar múltiplos arquivos de template, pode usar tags condicionais dentro de index.php:

    <?php get_header(); ?>
    
    <?php if ( is_front_page() && is_home() ) : ?>
        <?php get_template_part( 'template-parts/home', 'blog-index' ); ?>
    <?php elseif ( is_front_page() ) : ?>
        <?php get_template_part( 'template-parts/home', 'static' ); ?>
    <?php elseif ( is_single() ) : ?>
        <?php get_template_part( 'template-parts/content', get_post_type() ); ?>
    <?php elseif ( is_archive() ) : ?>
        <?php get_template_part( 'template-parts/archive', 'default' ); ?>
    <?php else : ?>
        <?php get_template_part( 'template-parts/content', 'none' ); ?>
    <?php endif; ?>
    
    <?php get_footer(); ?>

    Este padrão é usado por temas como Twenty Twenty-One e é perfeitamente válido. A desvantagem é que um único index.php grande torna-se mais difícil de manter à medida que a complexidade cresce.

    Multisite e Hierarquia de Templates

    Em uma rede WordPress Multisite, cada site na rede pode usar um tema ativo diferente. A hierarquia de templates opera de forma idêntica por site, mas plugins ativados na rede podem usar filtros template_include ou _{$type}_template_hierarchy para injetar templates compartilhados em todos os sites sem duplicar arquivos de tema.

    Um padrão multisite comum é um diretório de “template de rede” fora da raiz web que é referenciado via hooks de filtro no nível do plugin. Isso permite que uma equipe de design central envie atualizações de templates para todos os sites simultaneamente — uma vantagem operacional significativa para agências que gerenciam dezenas de sites de clientes em um único ambiente de Hospedagem Web Compartilhada ou VPS.

    SSL, Segurança e Permissões de Arquivos de Template

    Os arquivos de template são PHP e devem ser tratados como código executável. Permissões de arquivo incorretas são um vetor de ataque comum. Em um servidor Linux, os arquivos de template do tema devem ser de propriedade do utilizador do servidor web (normalmente www-data ou nginx) e definidos para o modo 644:

    find /var/www/html/wp-content/themes/your-theme -type f -name "*.php" -exec chmod 644 {} ;
    find /var/www/html/wp-content/themes/your-theme -type d -exec chmod 755 {} ;

    Nunca defina arquivos PHP para 777. Se um arquivo de template requer acesso de escrita (incomum e geralmente desaconselhável), use 664 com propriedade de grupo adequada.

    Combinar sua instalação WordPress com um Certificado SSL válido garante que o conteúdo renderizado por templates — incluindo páginas geradas dinamicamente com dados sensíveis do utilizador — seja sempre transmitido via HTTPS. Isso é inegociável para qualquer site que use formulários de contato, contas de utilizador ou e-commerce.

    Referência da Hierarquia de Templates: Fluxo Visual

    Request URL
        |
        v
    WordPress Query Resolution (WP_Query)
        |
        +-- Is it the front page?
        |       front-page.php → home.php → index.php
        |
        +-- Is it a single post?
        |       single-{type}-{slug}.php → single-{type}.php → single.php → singular.php → index.php
        |
        +-- Is it a static page?
        |       [custom template] → page-{slug}.php → page-{ID}.php → page.php → singular.php → index.php
        |
        +-- Is it a category archive?
        |       category-{slug}.php → category-{ID}.php → category.php → archive.php → index.php
        |
        +-- Is it a custom taxonomy?
        |       taxonomy-{tax}-{term}.php → taxonomy-{tax}.php → taxonomy.php → archive.php → index.php
        |
        +-- Is it an author archive?
        |       author-{nicename}.php → author-{ID}.php → author.php → archive.php → index.php
        |
        +-- Is it a date archive?
        |       date.php → archive.php → index.php
        |
        +-- Is it search results?
        |       search.php → index.php
        |
        +-- Is it a 404?
                404.php → index.php

    Matriz de Decisão: Quando Usar Qual Abordagem de Personalização

    CenárioAbordagem RecomendadaEvitar
    Substituir uma categoria específicaCriar category-{slug}.php no temaModificar archive.php diretamente
    Substituir uma página específicaCriar page-{slug}.php ou usar cabeçalho de template personalizadoEditar page.php
    Modificar template do WooCommerceCopiar para o diretório theme/woocommerce/Editar arquivos do plugin
    Modificar template do tema paiCriar arquivo idêntico no tema filhoEditar arquivos do tema pai
    Aplicar lógica a múltiplos tipos de páginaUsar tags condicionais em um template compartilhadoDuplicar código entre templates
    Injetar templates de um pluginUsar filtro _{$type}_template_hierarchyCodificar caminhos em arquivos de tema
    Substituir qualquer template como último recursoUsar filtro template_includeUsar exit() ou die() em templates
    Personalização de tema de blocosUsar o Editor do Site ou arquivos HTML templates/Misturar templates PHP e HTML de blocos

    Principais Conclusões Técnicas

    • index.php é obrigatório. Todo tema deve incluí-lo. É o fallback universal que termina cada cadeia de resolução.
    • singular.php é a camada intermediária subutilizada. Ele captura qualquer post ou página única quando nem single.php nem page.php existem. Use-o em temas mínimos para reduzir a contagem de arquivos.
    • front-page.php substitui tudo para a página inicial, independentemente das configurações de Leitura. Se existir, ele carrega — sempre.
    • A nomenclatura de arquivos é sensível a maiúsculas e minúsculas em servidores Linux. Category-News.php não corresponderá quando o WordPress procurar category-news.php. Esta é uma falha silenciosa que é difícil de depurar sem o Query Monitor.
    • O filtro template_include é a substituição mestre. Ele dispara após toda a resolução da hierarquia ser concluída e lhe dá uma oportunidade final de trocar qualquer template por qualquer motivo.
    • Os temas de blocos armazenam templates como HTML, não PHP. A lógica da hierarquia é idêntica, mas o formato do arquivo e a estrutura de diretórios diferem fundamentalmente dos temas clássicos.
    • O functions.php do tema filho carrega além do pai, não em vez dele. Todos os outros arquivos de template seguem o padrão de substituição padrão.
    • O ajuste do OPcache importa em escala. Em sites com muito tráfego, certifique-se de que opcache.max_accelerated_files excede o número total de arquivos PHP na sua instalação WordPress, incluindo todos os templates de tema.
    • Os templates do WooCommerce ficam fora da hierarquia do WordPress. Eles requerem um fluxo de trabalho de substituição separado via o subdiretório woocommerce/ no seu tema.
    • Combine seu trabalho de personalização de templates com um domínio devidamente configurado e Registo de Domínio para garantir consistência de URL canônica em todas as páginas renderizadas por templates.

    FAQ

    O que acontece se o WordPress não conseguir encontrar nenhum arquivo de template na hierarquia?

    O WordPress sempre encontra index.php porque é necessário para todo tema válido. Se index.php estiver ausente, o WordPress lança um erro fatal e exibe uma página em branco ou erro do servidor. Este é o único arquivo de template cuja ausência quebra o site completamente.

    Posso usar a hierarquia de templates em um plugin sem modificar o tema ativo?

    Sim. Use o filtro _{$type}_template_hierarchy para adicionar um caminho de diretório de plugin ao array de candidatos antes de locate_template() ser executado, ou use template_include para trocar o caminho do template resolvido após a resolução. É assim que WooCommerce, bbPress e a maioria dos principais plugins injetam seus próprios templates sem exigir modificações no tema.

    Por que front-page.php substitui meu índice do blog mesmo quando defino “Seus posts mais recentes” nas configurações de Leitura?

    Porque front-page.php tem precedência incondicional para a página inicial em todas as configurações de Leitura. Se você quiser que o índice do blog use home.php em vez disso, renomeie ou remova front-page.php do seu tema. Dentro de front-page.php, use is_home() para detectar se a página inicial também é o índice do blog e renderize adequadamente.

    Como descubro qual arquivo de template o WordPress está usando atualmente para uma página específica?

    Instale o plugin Query Monitor. Ele exibe o caminho do template resolvido e a hierarquia completa de candidatos na barra de ferramentas do administrador em cada carregamento de página. Alternativamente, adicione um filtro template_include temporário que exibe o caminho como um comentário HTML visível apenas para administradores.

    A hierarquia de templates funciona da mesma forma no WordPress Multisite?

    A lógica de resolução por site é idêntica. Cada site resolve templates em relação ao seu próprio tema ativo. A diferença está no nível da rede: plugins ativados na rede podem usar hooks de filtro para injetar templates compartilhados em todos os sites, e a função get_stylesheet_directory() retorna o caminho correto para o tema ativo de cada site individual, não um caminho de rede compartilhado.

    15%

    Poupe 15% em todos os serviços

    Teste as suas habilidades e obtenha Desconto em qualquer plano

    Utilizar o código:

    Skills
    Começar a trabalhar