Domine completamente os tipos de artigos personalizados do WordPress: desde a criação até práticas de aplicação avançadas.

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

O que é um tipo de artigo personalizado?

Os artigos (Post) e as páginas (Page) do núcleo do WordPress são dois tipos de conteúdo integrados, mas, quando confrontados com necessidades de conteúdo diversificadas, como apresentação de produtos, apresentação de membros da equipa ou casos de projeto, eles muitas vezes não são suficientes. Os tipos de artigos personalizados (Custom Post Type, CPT) são uma extensão de funcionalidade concebida para resolver este problema. Permitem que os programadores definam novos tipos de conteúdo com campos específicos, taxonomias personalizadas e interfaces de gestão exclusivas, transformando o WordPress de um sistema de blogue num sistema de gestão de conteúdos poderoso.

Ao contrário da utilização de campos personalizados para expandir artigos padrão, o CPT cria entidades de conteúdo completamente independentes em termos lógicos. Por exemplo, um CPT de “produto” pode ter o seu próprio processo de publicação, página de arquivo e página de detalhes, e a sua estrutura de dados e interface de gestão de back-end podem ser personalizadas de acordo com as características do “produto”. Isto melhora significativamente a clareza e a profissionalidade da gestão de conteúdos e fornece uma base sólida para implementar estruturas de websites complexas.

Como criar um tipo de artigo personalizado

Existem duas formas principais de criar tipos de artigos personalizados no WordPress: registar através de código e utilizar um plugin visual. Para os programadores que procuram o melhor desempenho e controlo total, escrever código é a opção preferida.

Leitura recomendada Guia completo para otimização do desempenho do WordPress: desde a configuração básica até a aceleração avançada de cache.

Registar o CPT através do código

O método mais fundamental é usar register_post_type Função. Os desenvolvedores precisam incluir isso no tema. functions.php Você pode chamar esta função em um arquivo ou em um plug-in de funcionalidade separado. Ao passar um identificador exclusivo (slug) e uma matriz contendo vários parâmetros, você pode definir todos os atributos de um novo tipo de artigo, incluindo tags, visibilidade, funcionalidades suportadas, ícones de menu e muito mais.

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).

Aqui está um exemplo clássico de como criar um tipo de artigo personalizado para “Produtos”:

function create_product_post_type() {
    $labels = array(
        'name'               => '产品',
        'singular_name'      => '产品',
        'add_new'            => '添加新产品',
        'add_new_item'       => '添加新产品',
        'edit_item'          => '编辑产品',
        'new_item'           => '新产品',
        'view_item'          => '查看产品',
        'search_items'       => '搜索产品',
        'not_found'          => '未找到产品',
        'not_found_in_trash' => '回收站中没有产品',
        'menu_name'          => '产品',
    );
    $args = array(
        'labels'             => $labels,
        'public'             => true,
        'publicly_queryable' => true,
        'show_ui'            => true,
        'show_in_menu'       => true,
        'query_var'          => true,
        'rewrite'            => array( 'slug' => 'product' ),
        'capability_type'    => 'post',
        'has_archive'        => true,
        'hierarchical'       => false,
        'menu_position'      => 5,
        'menu_icon'          => 'dashicons-cart',
        'supports'           => array( 'title', 'editor', 'thumbnail', 'excerpt', 'custom-fields' ),
    );
    register_post_type( 'product', $args );
}
add_action( 'init', 'create_product_post_type' );

\nUsar plugins para criar um CPT

Para os utilizadores que não estão familiarizados com o código, plugins como o “Custom Post Type UI” ou o “Toolset Types” fornecem uma interface gráfica para criar e gerir CPTs. Basta preencher um formulário no back-end, definir várias opções e o plugin irá gerar e executar automaticamente o código de registo. Esta abordagem é eficiente e rápida, mas pode introduzir dependências adicionais e custos de desempenho. Ao escolher, deve considerar a manutenção do plugin e as necessidades a longo prazo do projeto.

Criar um modelo de arquivo e de página única personalizado para o CPT.

Depois de registar um tipo de artigo personalizado, o WordPress tentará utilizar o ficheiro de modelo correspondente no tema para apresentar o seu conteúdo. Seguindo as regras de hierarquia de modelos do WordPress, pode criar modelos específicos para controlar com precisão a apresentação do CPT.

Modelo de página de arquivo personalizado

Para criar a página de arquivo do “Produto” CPT (ou seja, a página de lista de todos os produtos), você precisa criar uma pasta chamada "Produto" no diretório do tema. archive-product.php Os ficheiros. Neste caso, “product” é o slug utilizado durante o registo do CPT. Neste ficheiro, pode utilizar o ciclo padrão do WordPress para obter e apresentar todos os artigos do tipo “product”.

Leitura recomendada Guia definitivo para otimizar o desempenho do site WordPress: desde a aceleração do carregamento até a implementação da cache.

\n// Excerto de archive-product.php
    <header class="page-header">
        <h1 class="page-title">Os nossos produtos</h1>
    </header>
    <div class="products-grid">
        
            <article id="post-<?php the_ID(); ?>" no numeric noise key 1008>
                <a href="/pt/</?php the_permalink(); ?>">
                    <?php the_post_thumbnail( 'medium' ); ?>
                    <h2>\n</h2>
                </a>
                <div class="entry-excerpt">
                    \n
                </div>
            </article>
        <?php endwhile; ?>
    </div>
    <p><strong>Se o conteúdo for uma página</strong>: 
 
 
</p>
    <p>Não há produtos no momento.</p>

Template personalizado para um único artigo.

Da mesma forma, para criar um modelo de página de detalhes para um único “produto”, é necessário criar single-product.php Documento. Este modelo é usado para mostrar o conteúdo completo de um único artigo de “produto”, onde pode introduzir todos os campos personalizados que adicionou no editor de artigos.

/// Excerto de exemplo de single-product.php
    <article id="post-<?php the_ID(); ?>" no numeric noise key 1005>
        <header class="entry-header">
            <h1 class="entry-title">\n</h1>
            <div class="product-meta">
                <span>Preço:</span>
                <span>SKU:</span>
            </div>
        </header>
        <div class="entry-content">
            \n
        </div>
    </article>
<?php endwhile; ?>

Aplicações avançadas e otimização de desempenho do CPT.

Quando o seu website contém vários tipos de artigos personalizados e uma grande quantidade de dados, torna-se fundamental prestar atenção às suas aplicações avançadas e ao seu desempenho. Isto envolve consultas personalizadas, dados relacionados e técnicas de otimização.

Utilizar WP_Query para efetuar consultas personalizadas.

Apesar de o ciclo principal do WordPress processar automaticamente as consultas de CPT, muitas vezes precisamos de efetuar consultas personalizadas em locais como a barra lateral, os blocos em destaque, etc. Nestes casos, devemos utilizar WP_Query A classe e através dela post_type Os parâmetros especificam o CPT que se pretende consultar.

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%
// 查询最新 3 个“产品”
$product_query = new WP_Query( array(
    'post_type'      => 'product',
    'posts_per_page' => 3,
    'orderby'        => 'date',
    'order'          => 'DESC',
) );
if ( $product_query->have_posts() ) {
    while ( $product_query->have_posts() ) {
        $product_query->the_post();
        // 输出产品信息
    }
    wp_reset_postdata(); // 重置查询数据
}

Relacionar o CPT com a taxonomia personalizada.

Para organizar o conteúdo do CPT de forma mais detalhada, pode-se criar uma taxonomia personalizada para o mesmo. Por exemplo, para o CPT “Produtos”, pode-se criar as categorias “Categoria de produtos” e “Etiquetas de produtos”. Isso requer o uso de register_taxonomy A função, e através dela no momento do registo. object_type Os parâmetros associam-no ao CPT “Produto”. Isto permite-lhe classificar os produtos de forma multidimensional, tal como faz com as categorias e etiquetas de artigos, e gerar páginas de arquivo de categorias correspondentes.

Optimizar o desempenho do CPT.

À medida que o volume de dados aumenta, as consultas do CPT podem afetar a velocidade do site. As principais medidas de otimização incluem:
1. Utilize a API Transients para armazenar em cache os resultados das consultas: Para as listas de CPT que não são alteradas com frequência (como os produtos populares), pode armazenar os resultados das consultas em cache.
2. Garantir a indexação da base de dados: para os campos de consulta frequentemente utilizados no CPT (como, por exemplo, post_type, meta_value A criação de índices (por exemplo, para tabelas, colunas, etc.) pode melhorar significativamente a eficiência das consultas.
3. Utilize a paginação e o carregamento diferido: para páginas de arquivo com grandes quantidades de dados, é essencial ativar a paginação. Para recursos como imagens, considere utilizar a técnica de carregamento preguiçoso.
4. Evite fazer várias consultas ao banco de dados durante um ciclo: especialmente, evite chamar funções dentro do ciclo. get_post_meta Quando uma função obtém um grande número de campos personalizados, deve-se tentar obter todos os metadados necessários de uma só vez.

resumos

Os tipos de artigos personalizados do WordPress são a base para a criação de sites profissionais e complexos. Eles ultrapassam as limitações dos artigos e páginas padrão, permitindo-nos criar um sistema de gestão e apresentação independente e completo para qualquer tipo de conteúdo estruturado, como produtos, estudos de caso, membros da equipa, etc. Através de register_post_type Crie um função ou plug-in e, em seguida, crie um exclusivo com base no nível do modelo archive-{slug}.php e single-{slug}.php \nDo modelo, para a utilização. WP_Query A realização de consultas avançadas e a associação com taxonomias personalizadas, todo este processo confere aos programadores uma grande capacidade de modelar conteúdo. Por último, a implementação de cache, indexação e otimização de consultas garante um bom desempenho ao construir websites de grande escala com o CPT. Dominar o CPT significa que desbloqueou o potencial central do WordPress como um CMS maduro.

Leitura recomendada Do início: um guia completo e as melhores práticas para criar um blog pessoal usando o WordPress.

Perguntas frequentes Perguntas frequentes

Qual é a diferença entre tipos de artigos personalizados e campos personalizados?

Os Tipos de Artigos Personalizados (CPT) criam um novo tipo de conteúdo, com um menu de back-end, tabelas de dados e estrutura lógica independentes, adequados para definir entidades principais como “produtos” e “eventos”.

Os campos personalizados (Custom Fields ou Meta Boxes) são ferramentas que permitem adicionar atributos ou informações adicionais aos tipos de conteúdo existentes (como artigos, páginas ou CPT), por exemplo, adicionar campos como “preço” e “cor” a um CPT de “produto”. O CPT define “o que”, enquanto os campos personalizados descrevem “quais são as propriedades”.

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.

Qual é a melhor forma de registar o CPT no functions.php do tema e nos plugins independentes?

Para os CPTs específicos do projeto, fortemente relacionados com o design do tema atual, coloque o seu código na pasta do tema. functions.php Isso é viável.

No entanto, a melhor prática é criar um plug-in de funcionalidade separado para armazenar o código de registo do CPT. A vantagem de fazer isto é que, quando se altera o tema, o CPT e os seus dados de conteúdo não são perdidos, garantindo a persistência e a independência do conteúdo do website, em conformidade com o princípio da separação de preocupações.

Como adicionar novas funcionalidades de suporte aos tipos de artigos personalizados existentes?

Você pode usar add_post_type_support Funções para adicionar suporte a funcionalidades aos CPTs registados. Por exemplo, se quiser adicionar a funcionalidade “Resumo” a um CPT “produto” que não suportava esta funcionalidade anteriormente, pode fazê-lo no tema do site. functions.php Ou adicione o seguinte código no plug-in:

add_action( 'init', 'add_excerpt_support_for_product' );
function add_excerpt_support_for_product() {
    add_post_type_support( 'product', 'excerpt' );
}

Como funciona o link permanente (Permalink) de um artigo de tipo personalizado?

Ao registar-se no CPT, através de rewrite Os parâmetros podem definir a estrutura dos links. Por exemplo, 'rewrite' => array( 'slug' => 'product' ) Isso fará com que o link da página única do seu produto seja semelhante a este: yourdomain.com/product/some-product/O link para a página de arquivo é normalmente yourdomain.com/product/

Depois de registar o CPT, certifique-se de ir para a página “Configurações” -> “Links Permanentes” no painel de administração do WordPress e clique no botão “Salvar Alterações” sem fazer nenhuma alteração. Isto irá atualizar as regras de reescrita e garantir que os seus links personalizados funcionem correctamente.

Como consultar o conteúdo de vários tipos de artigos personalizados?

Ao utilizar WP_Query Ao fazer uma pesquisa, será post_type Os parâmetros podem ser definidos como uma matriz para pesquisar vários CPTs ao mesmo tempo.

$multi_cpt_query = new WP_Query( array(
    'post_type' => array( 'post', 'product', 'portfolio' ),
    'posts_per_page' => 10,
) );

Isso é muito útil para criar uma secção de “Últimas notícias” na página inicial que combine artigos de blogue, produtos e casos de estudo.