Como ligar modelos de arquivo personalizados a diferentes tipos de artigos do WordPress.

Leitura de 3 minutos
2026-03-18
2026-06-04
2,007
Eu recebo uma comissão quando você faz compras através dos links abaixo, sem custo adicional para você.

A estrutura hierárquica dos templates de temas do WordPress é o núcleo de sua grande flexibilidade, permitindo que os desenvolvedores criem páginas de exibição únicas para diferentes tipos de conteúdo seguindo regras específicas de nomeação de arquivos. Este mecanismo também é claro e eficaz para as páginas de arquivos (ou seja, as páginas que listam artigos). É essencial compreendê-lo e aplicá-lo corretamente. archive-{post_type}.php Esta regra de nomeação é fundamental para criar páginas de listas exclusivas para tipos de artigos personalizados. Este artigo explicará de forma sistemática todo o processo, desde os princípios até a prática, passando pela resolução de eventuais problemas.

Compreender a estrutura hierárquica dos modelos e o mecanismo de arquivamento das páginas

Quando um usuário acessa uma página de lista de artigos, como a página inicial do seu blog ou a página de um determinado catálogo, o WordPress inicia um processo chamado “query principal” para obter os artigos correspondentes. Ao mesmo tempo, ele procura o arquivo de template PHP mais adequado para renderizar a página de acordo com o contexto da consulta atual, seguindo uma ordem de prioridade estabelecida. Essa ordem é conhecida como “estrutura hierárquica de templates”.

Para a página de arquivos, o caminho de busca segue um padrão específico. Supondo que o usuário esteja acessando a página de arquivos do tipo “artigo” padrão, o WordPress procura sequencialmente nos seguintes locais:archive-post.php -> archive.php -> index.phpBasta encontrar o primeiro arquivo que exista para usá-lo.

Leitura recomendada Domine os tipos de artigos personalizados do WordPress: um guia prático completo, desde a criação até a publicação.

O núcleo desse mecanismo reside em… archive-{post_type}.php… Aqui… {post_type} É uma variável que precisa ser substituída pelo nome de registro do tipo de artigo. Por exemplo, para criar uma página de arquivos para um tipo de artigo personalizado chamado “Projeto”, é necessário ter um nome específico para esse tipo de artigo. archive-project.php O arquivo em questão. Somente se esse arquivo não existir, o WordPress recorrerá à versão padrão (genérica). archive.phpIsso nos permite controlar com precisão a maneira como os listamentos de diferentes tipos de conteúdo são exibidos.

Hospedagem para sites WordPress da UltraHost
Garantia de reembolso em 30 dias, largura de banda ilimitada e banco de dados, proteção contra DDoS gratuita; desconto de 50% na compra de 3 anos (planos de 4 TB a 10 TB).

Criar um modelo de arquivo para tipos de artigos personalizados

Assegure-se de que o tipo de artigo suporte a funcionalidade de arquivamento.

A condição para criar um arquivo de modelo é que o seu tipo de artigo personalizado (CPT – Custom Post Type) deve declarar explicitamente suporte para arquivamento. Isso geralmente é feito durante o processo de criação do tipo de artigo no sistema de gerenciamento de conteúdo. register_post_type Ao registrar uma função para o CPT (Content Provider Toolkit), isso é feito através da configuração dos parâmetros.

No array de parâmetros da função de registro,has_archive O parâmetro controla se a página de arquivamento deve ser ativada ou não. Defina-o conforme desejado. true É um passo essencial. Se for configurado para… false Ou não foi definido (o valor padrão é…) falseMesmo que você crie o arquivo de template correto, o WordPress não gerará o URL correspondente para acessar essa página de arquivamento.

Um exemplo padrão de registro CPT (Common Practice Template) que suporta arquivos de arquivamento é o seguinte:

function my_register_custom_post_type() {
    $labels = array(
        'name' => '产品',
        'singular_name' => '产品',
    );
    $args = array(
        'labels' => $labels,
        'public' => true,
        'has_archive' => true, // 启用存档功能
        'rewrite' => array('slug' => 'products'), // 可选:自定义存档页URL别名
        'supports' => array('title', 'editor', 'thumbnail'),
        'menu_icon' => 'dashicons-cart',
    );
    register_post_type('product', $args);
}
add_action('init', 'my_register_custom_post_type');

Estrutura e conteúdo dos arquivos de modelo

Após confirmar que o CPT suporta a criação de arquivos de arquivamento, o próximo passo é criar o arquivo de modelo correspondente no diretório de temas da sua atividade. A nomeação do arquivo deve seguir rigorosamente as regras estabelecidas. archive-{post_type}.php De acordo com o formato solicitado, e… {post_type} Deve ser exatamente o mesmo nome usado no momento do registro (considerando a diferenciação entre maiúsculas e minúsculas).

Leitura recomendada Começando do zero: Guia completo para o desenvolvimento de temas WordPress e compartilhamento de melhores práticas

Dentro deste arquivo, você pode usar as tags de template e os ciclos do WordPress da mesma forma que constrói outros modelos de página. É uma abordagem básica, mas completa para criar conteúdos dinâmicos e estruturados. archive-product.php Pode ser algo como o seguinte:

<?php
/**
 * 模板名称:产品存档页
 * 用于展示“product”自定义文章类型的文章列表
 */
get_header(); ?>

<main id="primary" class="site-main">
    <header class="archive-header page-header">
        &lt;?php
            the_archive_title( &#039;<h1 class="archive-title page-title">', '</h1>' );
            the_archive_description( '<div class="archive-description">', '</div>' );
        ?&gt;
    </header>


        <div class="product-archive-wrapper">
            <?php
            while ( have_posts() ) :
                the_post();
                ?>
                <article id="post-<?php the_ID(); ?>" no numeric noise key 1012>
                    <a href="/pt/</?php the_permalink(); ?>" class="product-thumbnail-link">
                        
                    </a>
                    <div class="product-content">
                        <h2 class="product-title">
                            <a href="/pt/</?php the_permalink(); ?>">\n</a>
                        </h2>
                        <div class="product-excerpt">
                            \n
                        </div>
                        <a href="/pt/</?php the_permalink(); ?>" class="read-more-link">Introdução</a>
                    </div>
                </article>
            <?php endwhile; ?>
        </div>

2,
            'prev_text' =&gt; __( '上一页', 'textdomain' ),
            'next_text' =&gt; __( '下一页', 'textdomain' ),
        ) );
        ?&gt;
        <section class="no-products">
            <p>Desculpe, nenhum produto foi encontrado no momento.</p>
        </section>
    
</main>

&lt;?php
get_sidebar();
get_footer();

Técnicas Avançadas de Controle e Personalização

Usar condições de avaliação no modelo de arquivamento geral

Às vezes, você pode querer que vários tipos de artigos diferentes compartilhem o mesmo… archive.php Arquivos, mas exibem conteúdos diferentes de acordo com o tipo. Nesse caso, as etiquetas condicionais (Conditional Tags) do WordPress se tornam muito úteis.

A condição mais relevante é… is_post_type_archive() Funções. Você pode… archive.php Use-o para personalizar títulos, descrições ou estruturas de repetição (loop structures) para diferentes CPTs (Codes for Products).

hospedagem compartilhada da hosting.com
Alto desempenho com CPUs AMD EPYC, armazenamento SSD NVMe e LiteSpeed, suporte interno especializado 24 horas por dia, 7 dias por semana, medidas de segurança avançadas, incluindo SSL, força bruta, malware e proteção contra DDoS, economia de até 73%
// 在 archive.php 文件内
if ( is_post_type_archive('product') ) {
    echo '<h1>Nossos produtos e soluções</h1>';
    get_template_part('template-parts/loop', 'product-grid');
} elseif ( is_post_type_archive('event') ) {
    echo '<h1>Atividades e Seminários Recentes</h1>';
    get_template_part('template-parts/loop', 'event-list');
} else {
    // 默认的文章存档(博客)
    echo '<h1>Blogues e Notícias</h1>';
    get_template_part('template-parts/loop', 'default');
}

Usar ganchos para modificar a consulta da página de arquivos.

Modificar diretamente os ciclos dentro dos arquivos de template só altera o estilo de exibição dos resultados. Se você deseja alterar a lógica usada para obter os artigos na página de arquivamento — como o número de artigos por página, o método de ordenação ou a filtragem de artigos específicos — é necessário utilizar outros métodos ou ferramentas apropriadas. pre_get_posts Ganchos de ação (Action Hooks). Esta é a maneira recomendada pelo WordPress, pois garante a correta integração com funcionalidades como a paginação.

O exemplo de código abaixo mostra como modificar a consulta principal para a página de arquivamento de “produtos”, de modo que ela seja ordenada por um campo personalizado e exiba 9 itens por página:

function customize_product_archive_query($query) {
    // 确保只在非管理后台、主查询、且是产品存档页时生效
    if ( ! is_admin() && $query->is_main_query() && is_post_type_archive('product') ) {
        $query->set('posts_per_page', 9); // 每页9个产品
        $query->set('orderby', 'meta_value_num'); // 按数字元字段排序
        $query->set('meta_key', 'product_price'); // 指定元字段键
        $query->set('order', 'ASC'); // 升序排列
    }
}
add_action('pre_get_posts', 'customize_product_archive_query');

Aviso importante: Evite a todo custo o uso de... (conteúdo a ser especificado) em arquivos de template. query_posts() Modificar a consulta principal pode danificar o objeto de consulta e causar erros de paginação, problemas de compatibilidade com plugins, entre outros problemas.

Leitura recomendada Guia completo para o desenvolvimento de um site de comércio eletrónico com o WooCommerce: desde a configuração até à implementação de funcionalidades avançadas.

Carregar dinamicamente diferentes arquivos de template

Para cenários mais complexos, você pode usar… template_include Os filtros permitem determinar dinamicamente qual arquivo de template deve ser carregado. Isso permite que você altere o template com base em qualquer condição (como o papel do usuário, parâmetros da URL, hora, etc.).

Por exemplo, a página de arquivamento de um “produto” carrega um modelo diferente sob condições específicas:

Hospedagem Compartilhada InterServer
Hospedagem compartilhada $2.50 USD por mês, primeiro mês $0.1 USD código promocional tryinterserver, 461 scripts de aplicativos em nuvem, instalação com um clique.
function load_special_product_archive_template($template) {
    if ( is_post_type_archive('product') && some_custom_condition() ) {
        $new_template = locate_template('archive-product-special.php');
        if ( ! empty($new_template) ) {
            return $new_template;
        }
    }
    return $template;
}
add_filter('template_include', 'load_special_product_archive_template');

Resolução de problemas e melhores práticas

Mesmo seguindo todos os passos, às vezes o modelo de arquivamento pode não funcionar corretamente. Aqui está uma lista sistemática de verificação para ajudar a resolver o problema:

1. Atualizar os links fixos: Este é o passo mais comum e fundamental. Acesse o painel de controle do WordPress, vá em “Configurações” → “Links Fixos” e clique diretamente em “Salvar alterações”. Essa ação atualizará as regras de reescrita do WordPress, fazendo com que as novas regras de URL para as páginas de arquivamento entrem em vigor.
2. Verificação do registro do CPT: Assegure-se de que o código utilizado para o registro do CPT esteja sendo executado corretamente, e… has_archive Os parâmetros são finalmente transmitidos para… register_post_type O tempo realmente é… trueVerifique se há outros plugins ou códigos de temas que estejam sobrescrevendo as suas configurações de CPT (Custom Post Type).
3. Verifique a localização e o nome do arquivo: confirme. archive-{post_type}.php O arquivo está localizado no diretório raiz do tópico correto. Verifique a ortografia do nome do arquivo, incluindo as letras maiúsculas e minúsculas, para garantir que seja exatamente igual ao nome do tipo de postagem (post_type) registrado.
4. Tratamento da sobreposição de temas: Se você estiver utilizando subtemas, verifique se o tema pai não possui um arquivo de modelo com o mesmo nome que possa substituir a estrutura de modelos do subtema. Além disso, cheque se existem outros problemas relacionados à sobreposição de conteúdos entre os temas. template_include Interferência do filtro.
5. Problemas com o cache: Limpe o cache em todos os níveis, incluindo o cache de objetos do WordPress, o plugin de cache de páginas, bem como o cache do servidor ou do CDN.

Quanto às melhores práticas, recomenda-se sempre utilizá-las. pre_get_posts ao invés de query_posts Vamos modificar a consulta e utilizá-la no arquivo de template. post_class() Para gerar classes CSS dinâmicas para o artigo e facilitar o design de estilos, adicione comentários claros no cabeçalho do seu arquivo de template personalizado.

resumos

Conectar modelos de arquivos personalizados para diferentes tipos de artigos no WordPress é um processo que visa alinhar com precisão o conteúdo com a sua apresentação visual. O essencial nisso é entender e utilizar corretamente os mecanismos disponíveis no sistema. archive-{post_type}.php Essas regras de hierarquia do modelo vão desde garantir que a função de arquivamento esteja ativada durante o registro do CPT, passando pela criação e nomeação corretas dos arquivos de modelo, até o seu uso efetivo. pre_get_posts Os “ganchos” (hooks) são essenciais para o controle avançado das consultas, e cada passo nesse processo é de extrema importância. Ao dominar essas habilidades, você poderá criar facilmente páginas de listas para cada tipo de conteúdo no seu site, com funcionalidades completas e estilos únicos, o que aumentará significativamente a profissionalidade do site e a experiência do usuário.

Perguntas frequentes Perguntas frequentes

Como é a URL da página de arquivos personalizados?

Por padrão, o WordPress gera os URLs das páginas de arquivos com base no nome que você utilizou ao registrar um tipo de artigo personalizado. Por exemplo, um tipo de artigo chamado… product O URL da página de arquivamento do CPT (Claim Preparation Tool) geralmente é… 你的网站域名/product/Você pode fazer isso ao configurar suas informações durante o processo de registro. rewrite “Parameter in…” slug As opções permitem a personalização desse alias (nome alternativo) para o URL.

Posso exibir a filtragem de artigos com base em uma classificação personalizada no modelo de arquivamento?

Claro que sim. Essa é uma solicitação comum para páginas de arquivos. Você pode… archive-{post_type}.php Usar no modelo get_terms() A função obtém todos os termos da categoria personalizada associada (por exemplo, “Categorias de Produtos”) e os exibe em forma de links de filtragem. Quando o usuário clica em um desses links, é direcionado para a página de arquivos dessa categoria, e o WordPress procura e carrega os conteúdos correspondentes. taxonomy-{taxonomy_name}.php ou taxonomy-{taxonomy_name}-{term_slug}.php E outros modelos.

Como criar uma página de lista para tipos de artigos que não têm a função de arquivamento ativada?

Se um determinado tipo de artigo… has_archive Defina como falseNesse caso, você não conseguirá acessar a lista usando um URL de arquivamento padrão. A alternativa é criar uma página comum (Page) e, em seguida, usar esse modelo de página para exibir o conteúdo desejado. WP_Query ou get_posts() Para consultar e exibir artigos de um determinado tipo, você pode atribuir um modelo personalizado a essa página e escrever nele o código de consulta e de loop específico.

A funcionalidade de paginação não está funcionando nas páginas de arquivos personalizados. Como posso corrigir isso?

O erro de paginação quase sempre ocorre devido à alteração incorreta da Consulta Principal (Main Query). Por favor, verifique se você não está utilizando essa consulta de forma inadequada em seus templates. query_posts()Se você precisar modificar os parâmetros da consulta (como o número de artigos ou o método de ordenação), deve usar… pre_get_posts Ganchos, conforme descrito neste artigo. Além disso, assegure-se de que, ao chamá-los… the_posts_pagination() Ao criar uma função de paginação, ela afeta o contexto global (ou seja, todas as partes do código onde a função é utilizada). $wp_query Um objeto, e não um elemento personalizado. WP_Query Exemplo.