Criando tipos de postagem personalizados
Publicados: 2016-08-23O WordPress não é apenas uma plataforma de blogs há algum tempo. Um dos principais recursos que o ajudaram a se transformar em um sistema de gerenciamento de conteúdo (CMS) adequado são os Tipos de postagem personalizados .
Este é o primeiro artigo de uma série de 3 partes sobre o tópico de tipos de postagem personalizados (CPT). Estes são os tópicos que discutiremos nos próximos dois:
- Taxonomias personalizadas
- Exibindo tipos de postagem personalizados (modelos e consultas)
Mas, por enquanto, vamos dar uma olhada nos tipos de postagem personalizados e como configurá-los.
O que é um tipo de postagem personalizado?
Por padrão, o WordPress usa estes tipos de postagem:
- Publicar
- Página
- Acessório
- Revisão
- Item do menu
Então, o que é um tipo de postagem personalizado? Um tipo de postagem personalizada é basicamente uma postagem do WordPress com parâmetros definidos personalizados (campos personalizados, estrutura de categoria/tag personalizada, …). Os exemplos clássicos de tipos de postagem personalizados são: livros, resenhas, depoimentos, membros da equipe, portfólios e assim por diante. Mas você pode usá-lo para qualquer coisa que indique o tipo de conteúdo que você cria.
Por que você usaria um?
Você pode simplesmente usar postagens regulares do WP e usar categorias e tags, para separar os diferentes “tipos de postagem”. Mas isso não é o ideal e pode levar a complicações no futuro. Aqui estão alguns motivos pelos quais você pode querer usar um tipo de postagem personalizado:
- Se você deseja separar algum conteúdo de outros tipos de postagem disponíveis no WordPress
- Você precisa de alguns campos personalizados exclusivos para o conteúdo que deseja postar
- Você precisa exibir o conteúdo de forma diferente de outros tipos de postagem (como postagens ou páginas)
Digamos que você esteja escrevendo um blog de culinária. Você costuma postar críticas de restaurantes, mas também gostaria de postar suas próprias receitas. As receitas dariam um tipo de postagem personalizado perfeito , porque você provavelmente precisaria ter um layout diferente de uma postagem normal. Talvez também alguns campos personalizados, como ingredientes, por exemplo. Com a introdução de uma receita CPT , a seção do blog conteria apenas sua postagem normal e suas receitas teriam sua própria seção (página de arquivo de receitas própria). Isso tornaria mais fácil para os visitantes que querem apenas ver suas receitas.
Nesta série de artigos, criaremos o CPT de depoimentos para o nosso tema Shaka. Digamos que um usuário queira ter uma página onde possa exibir todos os depoimentos de clientes. Ele deseja adicionar alguns campos personalizados a esse tipo de postagem personalizado e também deseja um layout diferente para exibir esses depoimentos. Vamos primeiro dar uma olhada em como registrar um tipo de postagem personalizado.
Como você pode criar um tipo de postagem personalizado?
Existem duas maneiras de criar um novo tipo de postagem personalizado.
A primeira opção é usar um plugin que registrará o tipo de postagem personalizado para você. Este método é bom para usuários que não estão familiarizados com o código PHP. Você só insere os detalhes necessários e o plugin faz o resto.
O segundo método é registrar manualmente o tipo de postagem personalizada. Isso significa que você precisa escrever algum código, mas não entre em pânico, é bastante simples e também mostrarei um truque legal.
Crie um tipo de postagem personalizado com um plug-in – a maneira mais fácil
Se você deseja adicionar rápida e facilmente um tipo de postagem personalizado ao seu site, use um plug-in que ofereça essa funcionalidade. Provavelmente o plugin mais popular para fazer isso é o Custom Post Type UI, é gratuito e fácil de usar. Vamos configurar:
- Instale e ative o plugin Custom Post Type UI no seu painel wp-admin,
- Depois de ativar o plug-in, o item de menu de administração da interface do usuário do CPT estará disponível. Vá para CPT UI -> Adicionar/Editar tipos de postagem,
- Aqui você encontrará muitas configurações que você pode aplicar para personalizar seu CPT. Não vamos passar por todos eles em detalhes neste artigo. Mas há um ícone de dica de ferramenta ao lado de cada rótulo de configuração para explicar o que cada configuração faz. Vamos definir as coisas que precisamos para nosso caso de uso (CPT de depoimento),
- Insira a lesma: depoimentos, rótulo no plural: Depoimentos e o rótulo no singular: Depoimento,
- Você pode clicar no botão Editar rótulos adicionais para definir rótulos mais precisos. Mas podemos pular isso e voltar se encontrarmos um problema mais tarde,
- Todas as configurações padrão estão corretas para o nosso caso de uso, apenas adicionaremos o Suporte para Campos Personalizados (selecione a caixa de seleção Campos Personalizados na seção Suportes),
- Clique em Adicionar tipo de postagem para criar o tipo de postagem personalizado.
Assim que criamos o tipo de postagem personalizado, um novo item de menu do painel Testemunhos wp-admin é exibido. Agora podemos criar novos depoimentos com todos os campos que foram selecionados quando criamos o tipo de postagem personalizado (Título, Editor, Imagem em destaque e campos Personalizados).
Também podemos definir uma taxonomia para esse tipo de postagem personalizado, mas abordaremos isso no próximo artigo.
Crie um tipo de postagem personalizado manualmente – codificação envolvida
Você pode se perguntar: se você pode criar um tipo de postagem personalizado com um plug-in, por que alguém iria querer criá-lo manualmente, com código?
A capacidade de criar um com um plugin é certamente muito conveniente , mas há casos em que você gostaria de fazê-lo via código. Por exemplo, se você estiver desenvolvendo um site para seu cliente e não quiser que o cliente altere essas configurações, ou se não quiser instalar mais um plugin no site dele. Além disso, se você deseja criar um tema (ou um tema filho) para uso em vários sites, é mais fácil ter o tipo de postagem personalizado registrado no código do que repetir as etapas do plug-in para cada site. Existem alguns prós e contras para cada método, então você tem que decidir o que é melhor no seu caso.
O código para criar um tipo de postagem personalizado pode ser colocado diretamente em um tema (em functions.php ). Ou você pode criar um novo plugin e colocar o código CPT lá. Esta também é uma questão divisória na comunidade WordPress. Um lado diz que ele deve estar localizado no plugin , para que se você alterar o tema, os dados do CPT permaneçam (mas a saída é sem estilo e não fica bem no novo tema). E o outro lado acha que é melhor colocar o código CPT diretamente no tema , porque é específico do tema e também é estilizado especificamente para esse tema.

Pessoalmente, acho que é sempre melhor separar o estilo (tema) da funcionalidade (plugins) e assim criar um novo plugin para registro CPT é uma opção melhor . É mais fácil adicionar estilo ao novo tema para fazer com que a saída do CPT pareça boa do que perder os dados do CPT devido à mudança para um novo tema.
Registrar um tipo de postagem personalizado com código
Eu prometi um truque legal, não prometi? Bem, você realmente não precisa escrever código para poder registrar um tipo de postagem personalizado via código. Isso pode soar estranho, mas é verdade. Você pode usar esta ferramenta em generatewp.com para gerar o código necessário para o registro CPT. Tudo o que você deve fazer é inserir alguns dados e gerar o código. Eu fiz isso para o nosso caso de uso de depoimentos e foi isso que saiu:
// Register Custom Post Type function custom_post_type_testimonials() { $labels = array( 'name' => _x( 'Testimonials', 'Post Type General Name', 'text_domain' ), 'singular_name' => _x( 'Testimonial', 'Post Type Singular Name', 'text_domain' ), 'menu_name' => __( 'Testimonials', 'text_domain' ), 'name_admin_bar' => __( 'Testimonials', 'text_domain' ), 'archives' => __( 'Item Archives', 'text_domain' ), 'parent_item_colon' => __( 'Parent Item:', 'text_domain' ), 'all_items' => __( 'All Items', 'text_domain' ), 'add_new_item' => __( 'Add New Item', 'text_domain' ), 'add_new' => __( 'Add New', 'text_domain' ), 'new_item' => __( 'New Item', 'text_domain' ), 'edit_item' => __( 'Edit Item', 'text_domain' ), 'update_item' => __( 'Update Item', 'text_domain' ), 'view_item' => __( 'View Item', 'text_domain' ), 'search_items' => __( 'Search Item', 'text_domain' ), 'not_found' => __( 'Not found', 'text_domain' ), 'not_found_in_trash' => __( 'Not found in Trash', 'text_domain' ), 'featured_image' => __( 'Featured Image', 'text_domain' ), 'set_featured_image' => __( 'Set featured image', 'text_domain' ), 'remove_featured_image' => __( 'Remove featured image', 'text_domain' ), 'use_featured_image' => __( 'Use as featured image', 'text_domain' ), 'insert_into_item' => __( 'Insert into item', 'text_domain' ), 'uploaded_to_this_item' => __( 'Uploaded to this item', 'text_domain' ), 'items_list' => __( 'Items list', 'text_domain' ), 'items_list_navigation' => __( 'Items list navigation', 'text_domain' ), 'filter_items_list' => __( 'Filter items list', 'text_domain' ), ); $args = array( 'label' => __( 'Testimonials', 'text_domain' ), 'labels' => $labels, 'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields' ), 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 5, 'show_in_admin_bar' => true, 'show_in_nav_menus' => true, 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, 'capability_type' => 'page', ); register_post_type( 'testimonials', $args ); } add_action( 'init', 'custom_post_type_testimonials' );
… Um código PHP perfeitamente válido que você pode usar em seus projetos. Como discutido anteriormente, você pode colocar este código em um plugin recém-criado, ou pode colocá-lo no arquivo functions.php do tema. Por uma questão de simplicidade, optei pelo último. Coloquei este código no arquivo functions.php do tema, e o menu Testimonials wp-admin apareceu e agora posso criar novos depoimentos (assim como no método plugin acima).
Você também pode definir um ícone diferente para seu tipo de postagem personalizado, que será exibido no menu wp-admin. Você só precisa adicionar esta linha no array $args: 'menu_icon' => 'dashicons-businessman'
. Você pode encontrar uma lista de todos os ícones possíveis aqui: WordPress Dashicons. (Obrigado a Alexander por esta dica).
Vamos dar uma olhada mais de perto no código:
- Todo o processo de registro CPT é encapsulado na função
custom_post_type_testimonial()
, que é conectada ao ganchoinit
WP no final do trecho com esta linha de código:add_action( 'init', 'custom_post_type_testimonials' );
. Esta chamadaadd_action
é a chamada final que coloca tudo em movimento e faz o WordPress fazer sua mágica. - O primeiro bloco de código dentro da função é um array de dados chamado
$labels
, que contém as strings de tradução para esse tipo de postagem personalizado. - O segundo bloco é um array de argumentos usados para o registro do CPT, aqui você pode definir todas as configurações para o CPT. Quais campos o CPT deve suportar, se deve ser visível publicamente, a posição do menu wp-admin, se deve ter uma página de arquivo e assim por diante. Para ver o conjunto completo de opções, visite esta página do códice WP.
- A linha final da função é
register_post_type( 'testimonials', $args );
. Isso registrará o tipo de postagem personalizada 'testemunhos' com as configurações especificadas nos$args
acima.
É isso! Registramos um tipo de postagem personalizado com um pouco de código PHP.
A única melhoria que eu mudaria no código gerado seria usar funções de internacionalização de escape. Então, em vez de _x()
e __()
, eu usaria esc_html_x()
e esc_html__()
. É sempre bom escapar valores de saída – até mesmo strings de tradução – mas isso é assunto para outra postagem no blog.
Próximo artigo da série: Como criar uma taxonomia personalizada.