Publicado em 11/06/2024
WordpressProgramaçãoHey Dev, se você está dando seus primeiros passos no mundo do desenvolvimento full-stack e quer dominar o WordPress, então está no lugar certo. Hoje, vamos falar sobre algo que pode parecer complicado no início, mas é um divisor de águas quando se trata de customização: criar um Custom Post Type no WordPress.
Por Que Criar um Custom Post Type?
Antes de entrarmos no código, vamos entender o porquê de criar um Custom Post Type (CPT):
1. Personalização Total: Com CPTs, você pode criar tipos de conteúdo personalizados, como portfólios, depoimentos, produtos e muito mais, além dos posts e páginas padrão.
2. Organização: Facilita a organização e exibição de diferentes tipos de conteúdo de maneira lógica e estruturada.
3. SEO: Custom Post Types bem configurados podem melhorar sua otimização para motores de busca, ajudando a atrair mais visitantes.
Customizar o código do seu tema no WordPress pode parecer desafiador no início, mas não se preocupe, vou te guiar pelo processo com um exemplo prático e dicas!
Colocando a Mão na Massa: Criando um Custom Post Type
Passo 1: Configurando o Ambiente
Antes de começar, certifique-se de que você tem um ambiente de desenvolvimento local configurado com WordPress. Pode ser através de ferramentas como Local by Flywheel, LAMP, XAMPP ou MAMP.
Passo 2: Adicionando Código ao functions.php
Abra o arquivo functions.php
do seu tema ativo (localizado em wp-content/themes/seu_tema/functions.php
), é aqui que vamos inserir criar o seu primeiro CPT. Para este exemplo, vamos criar um post customizado para Portfólio.
function portfolio_cpt() { $labels = array( 'name' => _x('Portfólios', 'Post Type General Name'), 'singular_name' => _x('Portfólio', 'Post Type Singular Name'), 'menu_name' => __('Portfólios'), 'all_items' => __('Todos os Portfólios'), 'view_item' => __('Ver Portfólio'), 'add_new_item' => __('Adicionar Novo Portfólio'), 'add_new' => __('Adicionar Novo'), 'edit_item' => __('Editar Portfólio'), 'update_item' => __('Atualizar Portfólio'), 'search_items' => __('Buscar Portfólio'), 'not_found' => __('Não Encontrado'), 'not_found_in_trash' => __('Não Encontrado no Lixo'), ); $args = array( 'label' => __('portfólios'), 'description' => __('Portfólios de Projetos'), 'labels' => $labels, 'supports' => array('title', 'editor', 'thumbnail', 'revisions'), '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' => 'post', ); register_post_type('portfolio', $args); } add_action('init', 'portfolio_cpt');
Basicamente, são criados dois arrays contendo as informações da interface do post em $labels
e outro para as configurações de comportamento e campos $args
, para então registrarmos através da função register_post_type
, e depois invocarmos a criação do post customizado através do hook add_action
.
Agora vamos entender no detalhe cada variável contida nestes arrays:
Explicando o array $labels
O array `$labels` contém as strings usadas na interface administrativa do WordPress para descrever o novo Custom Post Type. Esses rótulos ajudam a tornar o CPT mais amigável e intuitivo para os usuários. Aqui está uma explicação de cada elemento:
$labels = array( 'name' => _x('Portfólios', 'Post Type General Name'), 'singular_name' => _x('Portfólio', 'Post Type Singular Name'), 'menu_name' => __('Portfólios'), 'all_items' => __('Todos os Portfólios'), 'view_item' => __('Ver Portfólio'), 'add_new_item' => __('Adicionar Novo Portfólio'), 'add_new' => __('Adicionar Novo'), 'edit_item' => __('Editar Portfólio'), 'update_item' => __('Atualizar Portfólio'), 'search_items' => __('Buscar Portfólio'), 'not_found' => __('Não Encontrado'), 'not_found_in_trash' => __('Não Encontrado no Lixo'), );
1. name
Nome plural geral do CPT. Aparece na interface do WordPress, por exemplo, no menu.
2. singular_name
Nome singular do CPT. Usado em contextos onde um único item é referido.
3. menu_name
Nome do CPT como ele aparece no menu de administração do WordPress.
4. all_items
Texto que aparece na tela que lista todos os itens do CPT. Por exemplo, “Todos os Portfólios”.
5. view_item
Texto do link para visualizar um item específico. Por exemplo, “Ver Portfólio”.
6. add_new_item
Texto do botão para adicionar um novo item. Por exemplo, “Adicionar Novo Portfólio”.
7. add_new
Texto do link para adicionar um novo item. Geralmente usado no menu. Por exemplo, “Adicionar Novo”.
8. edit_item
Texto do link para editar um item. Por exemplo, “Editar Portfólio”.
9. update_item
Texto do botão para atualizar um item. Por exemplo, “Atualizar Portfólio”.
10. search_items
Texto do campo de busca. Por exemplo, “Buscar Portfólio”.
11. not_found
Mensagem exibida quando nenhum item é encontrado. Por exemplo, “Não Encontrado”.
12. not_found_in_trash
Mensagem exibida quando nenhum item é encontrado na lixeira. Por exemplo, “Não Encontrado no Lixo”.
Explicando $args
O array $args
define as características do Custom Post Type. Ele controla como o CPT se comporta e como é apresentado na interface do WordPress.
$args = array( 'label' => __('portfólios'), 'description' => __('Portfólios de Projetos'), 'labels' => $labels, 'supports' => array('title', 'editor', 'thumbnail', 'revisions'), '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' => 'post', );
1. label
: Nome do CPT usado internamente. Geralmente, a forma plural do nome.
2. description
: Descrição do que é o CPT. Aparece na interface de administração para ajudar os usuários a entenderem seu propósito.
3. labels
: Array de rótulos. Referencia o array `$labels` definido anteriormente.
4. supports
: Define os recursos suportados pelo CPT, como ‘title’ (título), ‘editor’ (editor de conteúdo), ‘thumbnail’ (imagem destacada) e ‘revisions’ (revisões).
5. hierarchical
: Define se o CPT é hierárquico (como páginas) ou não (como posts). `false` para não-hierárquico, `true` para hierárquico.
6. public
: Define se o CPT é público. `true` para ser acessível pelo público, `false` para não ser.
7. show_ui
: Define se o CPT deve aparecer na interface de administração do WordPress. `true` para aparecer, `false` para não aparecer.
8. show_in_menu
: Define se o CPT deve aparecer no menu de administração. `true` para aparecer, `false` para não aparecer.
9. menu_position
: Define a posição do CPT no menu de administração. `5` posiciona logo após os posts.
10. show_in_admin_bar
: Define se o CPT deve aparecer na barra de administração. `true` para aparecer, `false` para não aparecer.
11. show_in_nav_menus
: Define se o CPT deve aparecer nos menus de navegação. `true` para aparecer, `false` para não aparecer.
12. can_export
: Define se o CPT pode ser exportado. `true` para permitir exportação, `false` para não permitir.
13. has_archive
: Define se o CPT deve ter uma página de arquivo. `true` para ter, `false` para não ter.
14. exclude_from_search
: Define se o CPT deve ser excluído dos resultados de pesquisa. `false` para incluir, `true` para excluir.
15. publicly_queryable
: Define se o CPT pode ser consultado publicamente através de URLs. `true` para permitir, `false` para não permitir.
16. capability_type
: Define o tipo de capacidade usado para o CPT. `post` significa que o CPT compartilha capacidades com posts, `page` com páginas, ou pode-se definir capacidades personalizadas.
Esses arrays combinados permitem que você configure exatamente como seu Custom Post Type deve se comportar e ser apresentado na interface do WordPress, oferecendo flexibilidade e controle total sobre suas novas entradas de conteúdo.
Passo 3: Atualizando Permalinks
Após adicionar o código, não se esqueça de ir em Configurações > Links Permanentes e clicar em “Salvar alterações”. Isso garante que os novos tipos de posts sejam reconhecidos corretamente pelo WordPress.
Comparando com Alternativas
Se você está se perguntando se há uma maneira mais fácil, a resposta é sim. Plugins como Custom Post Type UI facilitam a criação de CPTs sem a necessidade de código. Porém, usar código oferece mais controle e é uma excelente prática para aprender mais sobre o funcionamento do WordPress.
Conclusão
Criar Custom Post Types no WordPress pode parecer uma tarefa assustadora no começo, mas com prática e paciência, você dominará essa técnica poderosa. Lembre-se, cada linha de código que você escreve é um passo a mais na sua jornada para se tornar um desenvolvedor full-stack competente.
Então, o que está esperando? Abra seu editor de código e comece a experimentar! E não se esqueça de compartilhar suas experiências nos comentários abaixo. Vamos aprender juntos!