Skip to content

Tudo para WordPress, desenvolvimento web — e não só

🚀 Como criar uma página de arquivo para tipos de publicação personalizados no WordPress

🚀 Como criar uma página de arquivo para tipos de publicação personalizados no WordPress

Quando um site ultrapassa a fase de «blogue mais algumas páginas», os artigos e categorias padrão deixam de ser suficientes. Portefólios, equipas, testemunhos, casos de estudo, anúncios de emprego: tudo isto precisa de viver na sua própria estrutura, em vez de ser enfiado no fluxo geral de artigos com remendos de categorias.

O WordPress resolve este problema através dos tipos de conteúdo personalizados. Mas criar um CPT não basta; também precisa de uma página onde todas as entradas desse tipo sejam reunidas: uma página de arquivo. Sem ela, os visitantes simplesmente não verão os itens do seu portefólio ou os membros da equipa exibidos como um bloco unificado.

Plugins de grelha como o Essential Grid tratam do lado visual, mas adicionam CSS e JS extra. Em projetos pequenos, isto passa despercebido, mas num site com dezenas de milhares de visitantes, cada kilobyte conta. O mecanismo de arquivo nativo do WordPress oferece a mesma funcionalidade sem sobrecarga no frontend e demora apenas 10 minutos a configurar.

💡 Visão geral rápida:

  • Crie um tipo de conteúdo personalizado via CPT UI e ative o suporte de arquivo nas definições de imediato
  • Escreva um template personalizado para um controlo preciso do layout, se necessário
  • Configure os metadados de SEO via Yoast SEO: título, descrição e og:image para a página de arquivo
  • Desative a barra lateral e adicione marcação Open Graph, se necessário

1. Criar um tipo de conteúdo personalizado

A forma mais simples e fiável de registar um CPT sem uma única linha de código é o plugin Custom Post Type UI. Está instalado em mais de um milhão de sites e é mantido desde 2010, e a interface é intuitiva: os campos do formulário correspondem um a um aos argumentos da função register_post_type().

Página do plugin Custom Post Type UI no repositório do WordPress

Depois de instalar o plugin, vá a CPT UI → Add/Edit Post Types. Preencha o mínimo:

  • Post Type Slug: caracteres latinos, sem espaços (por exemplo portfolio)
  • Plural Label: "Portfolio"
  • Singular Label: "Trabalho"

Pode deixar as restantes definições com os valores padrão; os valores predefinidos cobrem a grande maioria dos cenários típicos. Clique em Add Post Type e o novo tipo aparecerá no painel de administração como um item de menu separado.

2. Configurar a página de arquivo

Para que as entradas do novo tipo sejam reunidas numa página separada, precisa de ativar explicitamente o suporte de arquivo. Está desativado por padrão.

Vá a CPT UI → Edit Post Types e selecione o tipo que criou na lista:

Página de edição de tipos de conteúdo personalizados no CPT UI

Desça até à secção Settings e preencha dois campos essenciais:

Campos de definições Has Archive e Custom Rewrite Slug no CPT UI
  • Has Archive: defina como True. Este é o interruptor para a página de arquivo.
  • Custom Rewrite Slug: o slug onde o arquivo estará acessível. Normalmente coincide com o slug do tipo de conteúdo (por exemplo portfolio).

Guarde as alterações e navegue para http://YOUR_SITE/portfolio. Verá uma lista de todas as entradas deste tipo, estilizadas com o template padrão archive.php do tema ativo:

Página de arquivo de exemplo para o tipo de conteúdo personalizado portefólio

A página básica está pronta. Se a aparência padrão for suficiente, pode parar por aqui. Mas, na maioria dos casos, vai querer refinar o aspeto.

3. Template personalizado archive-{posttype}.php

O WordPress utiliza uma hierarquia de templates clara. Quando um visitante acede a uma página de arquivo de CPT, o núcleo procura ficheiros por esta ordem:

  • archive-{posttype}.php
  • archive.php
  • index.php

Isto significa que só precisa de criar um ficheiro chamado archive-portfolio.php (onde portfolio é o slug do seu tipo de conteúdo) e o WordPress irá utilizá-lo automaticamente.

Passos:

Copie o conteúdo do archive.php do seu tema para um novo ficheiro archive-portfolio.php. Depois, modifique a marcação de acordo com as suas necessidades: oculte a data se não for relevante para um portefólio; apresente a miniatura num tamanho diferente; substitua o the_excerpt() padrão por the_content().

1<?php
2/* Template for Portfolio archive — overrides archive.php */
3
4if ( have_posts() ) {
5 while ( have_posts() ) {
6 the_post();
7 // Your custom markup here
8 the_post_thumbnail( 'medium' );
9 the_title( '<h3>', '</h3>' );
10 the_excerpt();
11 }
12}

Se estiver a trabalhar com um tema FSE (Block Theme), o template de arquivo é criado no editor do site: Appearance → Editor → Templates → Add New Template → Archive: Portfolio. Sem PHP, puramente blocos, mas a lógica é a mesma: layout personalizado para um CPT específico.

4. Otimização SEO para a página de arquivo

Uma página de arquivo não é apenas um URL utilitário. Os motores de busca indexam-na e ela pode facilmente gerar tráfego para consultas comerciais como «portefólio de estúdio web» ou «equipa de agência».

Se tiver o Yoast SEO instalado, os metadados para arquivos de CPT são configurados num único local:

Definições de tipos de conteúdo no Yoast SEO para publicações personalizadas

Abra Yoast SEO → Settings → Content Types, encontre o seu Custom Post Type e expanda a secção. Defina modelos para o título e a meta descrição:

Campos de modelo de título e descrição para a página de arquivo no Yoast SEO

Modelos recomendados:

  • Título: %%pt_plural%% %%page%%, %%sitename%%
  • Meta descrição: %%pt_plural%%, work samples, case studies and projects. %%sitename%%

O Yoast substitui automaticamente as variáveis %%pt_plural%% e %%pt_single%% pelas definições do seu CPT. Não se esqueça de desativar o noindex para a página de arquivo se estiver ativado por padrão; a caixa de seleção Show in search results deve estar ativa.

5. Marcação Open Graph e barra lateral

Para garantir que uma imagem é obtida ao partilhar o link da página de arquivo nas redes sociais, adicione og:image através do hook wp_head. Insira o código no functions.php do seu tema ativo ou através do plugin Code Snippets:

1add_action( 'wp_head', 'cpt_archive_og_image' );
2function cpt_archive_og_image() {
3 if ( is_post_type_archive( 'portfolio' ) ) {
4 echo '<meta property="og:image" content="' .
5 get_template_directory_uri() . '/images/portfolio-og.jpg' . '" />';
6 }
7}

A condição is_post_type_archive() é acionada apenas na página de arquivo do CPT especificado, pelo que a marcação não afetará outras páginas. Coloque a imagem na pasta do seu tema ou carregue-a através da biblioteca de multimédia e use o URL direto.

Um último retoque: a barra lateral. Em páginas de arquivo, é muitas vezes desnecessária, especialmente para portefólios ou equipas onde a largura dos cartões é importante. A maioria dos temas modernos permite desativar a barra lateral nas definições da página:

Definições de alternância da barra lateral no editor visual do tema

Em temas de blocos, mude o template para Full Width nas definições da página de arquivo. Em temas clássicos, procure Page Attributes → Template → Full Width no personalizador ou na metabox de edição.

📺 Vídeo: todo o processo em 8 minutos

Uma breve demonstração em inglês que cobre a criação do CPT, a ativação do arquivo e um template personalizado, do primeiro clique à página finalizada:

⁉️🤔 Perguntas frequentes

Porque é que a página de arquivo devolve um 404 depois de criar o CPT?

Muito provavelmente, não ativou o parâmetro Has Archive. Vá a CPT UI → Edit Post Types, encontre o seu tipo, defina Has Archive como True e especifique um Custom Rewrite Slug. Depois de guardar, não se esqueça de ir a Settings → Permalinks e clicar em "Save Changes"; isto limpa a cache das regras de reescrita.

Posso dispensar o plugin CPT UI?

Sim, os tipos de conteúdo personalizados podem ser registados no functions.php através da função register_post_type(). São cerca de 15 a 20 linhas de código, alguns minutos para um programador. O plugin oferece simplesmente uma interface visual e evita erros de digitação nos argumentos.

Como exibo entradas de CPT na página inicial?

Adicione 'has_archive' => true aos argumentos de register_post_type() e, para incluir entradas no feed principal, defina 'public' => true e 'exclude_from_search' => false. Para uma saída direcionada, use WP_Query com o argumento 'post_type' => 'portfolio'.

Qual é a diferença entre archive-{posttype}.php e taxonomy-{taxonomy}.php?

O primeiro trata da página com TODAS as entradas do CPT; o segundo trata da filtragem por um termo de taxonomia específico (por exemplo, "Tipo de projeto: landing page"). Ambos seguem a hierarquia de templates, mas são acionados em URLs diferentes.

É obrigatório um template personalizado?

Não. Se o archive.php padrão lhe convier, basta ativar o Has Archive e usá-lo. Um template personalizado é necessário quando precisa de marcação única: tamanhos de miniatura diferentes, sem datas, uma grelha em vez de uma lista.

E se o template padrão não funcionar para si?

Uma página de arquivo para conteúdos personalizados é algo que se configura uma vez e se esquece. O CPT UI mais algumas linhas no functions.php resolvem a questão por completo: sem plugins tudo-em-um, sem código extra no frontend.

Se depois de ler isto ainda tiver dúvidas sobre um tema específico ou combinação de plugins, deixe um comentário abaixo do artigo. Analisaremos o seu caso em separado.