Criar tipos de postagem personalizados do WordPress manualmente

Publicados: 2020-12-15

Em nosso primeiro artigo sobre os tipos de postagem personalizada do WordPress, analisamos como você pode criar facilmente seus próprios tipos de postagem personalizados usando o excelente plugin Custom Post Type UI. Neste segundo artigo, veremos como você pode fazer isso manualmente (por exemplo, codificando). Então, por que, se é tão fácil criar um tipo de postagem personalizado usando um plug-in, você gostaria de fazer isso ao longo do caminho?

Usar um plug-in para adicionar funcionalidades personalizadas pode funcionar extremamente bem (e a vasta biblioteca de plug-ins que ajudam a estender a funcionalidade é uma das razões pelas quais o WordPress é tão popular). Mas, podem surgir problemas se e quando um plug-in não for suportado (já que o autor do plug-in opta por não continuar atualizando e desenvolvendo-o). Se isso acontecer, você poderá descobrir que a funcionalidade fornecida pelo plug-in agora não funciona mais, o que pode ser um problema sério se o seu site for construído em torno de um recurso específico fornecido por um plug-in.

Como tal, se você pode codificar a funcionalidade diretamente, em vez de depender de um plug-in, é uma boa opção a ser considerada.

Hoje vamos orientá-lo sobre como você pode criar seu próprio tipo de postagem personalizado sem usar um plug-in. Também demonstraremos algumas configurações básicas, como definir os rótulos CPT (Custom Post Type) junto com coisas como habilitar imagens em destaque e muito mais. Em seguida, adicionaremos uma taxonomia personalizada e, finalmente, veremos como você pode exibir seu conteúdo de tipo de postagem personalizada no frontend do seu site.

Crie o tipo de postagem personalizado

Se você seguiu nosso tutorial anterior e ainda tem o plugin CPT UI instalado, desative-o para que não haja confusão ao criar seu novo CPT manualmente.

Como anteriormente, usaremos Receitas como foco para nosso novo tipo de postagem personalizada. Para começar, a primeira coisa que temos que fazer é criar o tipo de postagem personalizado inserindo o código correto em nosso arquivo functions.php .

Configuração básica

Por enquanto, criaremos nossos tipos de postagem com argumentos mínimos usando a função register_post_type que o WordPress fornece.

 register_post_type( string $post_type, array|string $args = array() )

A estrutura desta função requer dois parâmetros. A chave de tipo de postagem que deve conter apenas caracteres alfanuméricos minúsculos, traços e sublinhados e um segundo parâmetro opcional, o $args para argumentos adicionais. Vamos nos concentrar apenas em alguns desses argumentos neste artigo, mas se você quiser experimentar um pouco mais, poderá encontrar a lista completa dos argumentos disponíveis na documentação relacionada do WordPress.

Para o propósito deste artigo, usaremos o código abaixo.

 function recipes_post_type() { register_post_type( 'recipes', array( 'labels' => array( 'name' => __( 'Recipes' ), 'singular_name' => __( 'Recipe' ) ), 'public' => true, 'show_in_rest' => true, 'supports' => array('title', 'editor', 'thumbnail') ) ); } add_action( 'init', 'recipes_post_type' );

Se você estiver acompanhando, abra seu editor de texto favorito e adicione este código ao seu arquivo functions.php .

Você verá neste código que usamos o array 'labels' para definir os nomes singular e plural para nosso tipo de postagem, o argumento show_in_rest para ativar o editor Gutenberg para as postagens de receitas, bem como o argumento public .

O argumento public na verdade faz três coisas diferentes. Ele mostra o menu de postagem personalizado do administrador, inclui o menu de postagem personalizado nos resultados da pesquisa do site e também mostra o menu de postagem personalizado na área do Menu de administração do WordPress. Essas opções podem ser modificadas separadamente usando os show_in_nav_menus , exclude_from_search e show_ui respectivamente. Os valores padrão show_in_nav_menus e show_ui herdam o valor public , mas o valor padrão exclude_from_search é o oposto do valor public .

Também usamos o argumento de supports que define quais recursos uma postagem personalizada suportará. Por enquanto, habilitaremos apenas 'título', 'editor' e 'miniatura' (algumas opções adicionais serão mostradas em artigos futuros).

Com este trecho de código adicionado ao nosso arquivo functions.php e salvo (sempre faça backup do seu site antes de realizar um trabalho como este!), você verá agora um novo item de menu no Administrador do WordPress (neste caso, 'Receitas').

Em seguida, se formos para Aparência> Menus, podemos confirmar que as Receitas foram adicionadas como opção. Isso confirma que as coisas estão funcionando como deveriam.

Nota: Se você for para a área de menu e não vir o item de menu 'Receitas', é possível que ele não tenha sido verificado nas Opções de tela. Para fazer isso, vá até o topo da página e abra a barra de opções de tela e certifique-se de que seu novo tipo de postagem personalizado (receitas neste exemplo) foi marcado.

Adicione sua taxonomia para seu tipo de postagem personalizado

As taxonomias do WordPress existem para agrupar conteúdo semelhante. Neste ponto, temos nossas postagens personalizadas de 'receitas', mas não temos a capacidade de categorizá-las da maneira que queremos. Como tal, seria útil criar uma categoria separada para nossas receitas. Vamos, por exemplo, agrupar as receitas pelo tipo de cozinha a que pertencem.

Para conseguir isso, precisamos registrar uma nova taxonomia de 'cozinhas' e vinculá-la ao tipo de postagem 'receitas'.

Para adicionar a taxonomia, usamos a função register_taxonomy() que o WordPress fornece (veja uma lista de argumentos aqui).

 register_taxonomy( string $taxonomy, $object_type, $args )

Os argumentos obrigatórios são $taxonomy , que é a chave de taxonomia, e o $object_type , que é o tipo de objeto ou array de tipos de objeto com o qual a taxonomia deve ser associada, no nosso caso, 'receitas'. No parâmetro $arg também incluiremos os valores necessários para rotular nossas instâncias de administração de nossa taxonomia.

 function create_recipes_taxonomy() { register_taxonomy('cuisines','recipes',array( 'hierarchical' => false, 'labels' => array( 'name' => _x( 'Cuisines', 'taxonomy general name' ), 'singular_name' => _x( 'Cuisine', 'taxonomy singular name' ), 'menu_name' => __( 'Cuisines' ), 'all_items' => __( 'All Cuisines' ), 'edit_item' => __( 'Edit Cuisines' ), 'update_item' => __( 'Update Cuisines' ), 'add_new_item' => __( 'Add Cuisines' ), 'new_item_name' => __( 'New Cuisines' ), ), 'show_ui' => true, 'show_in_rest' => true, 'show_admin_column' => true, )); } add_action( 'init', 'create_recipes_taxonomy', 0 );

O booleano show_admin_column define se a taxonomia será ou não visível como uma coluna na tabela de lista de administração de receitas.

Agora, se você voltar ao seu administrador do WordPress e atualizar isso, verá a taxonomia 'Cuisines' no menu Recipes.

Você também deve ver uma coluna 'Cuisines' na tabela Recipes:

Exibindo seu conteúdo de tipo de postagem personalizado no frontend

Neste ponto, você deve poder incluir suas postagens personalizadas em seu menu, bem como as taxonomias personalizadas que você criou. Para demonstrar isso, adicionamos duas cozinhas 'mediterrânea' e 'mexicana' em nosso menu de taxonomia de cozinhas. Eles aparecem como opções de menu em nosso menu WordPress, permitindo-nos criar um menu de receitas como o mostrado abaixo.

Se você criou uma postagem de Receita e a associou a uma categoria de Culinária, agora deve vê-la aparecer quando selecionar a culinária associada no menu.

Nota: Se você tentar visualizar uma postagem de receita no front-end, poderá receber um “404 não encontrado”. Isso pode acontecer porque o cache do Permalink precisa ser liberado. Isso é fácil de fazer. Basta ir para Configurações>Permalinks e salvar novamente.

Agora vamos criar outro item de menu para 'Todas as Receitas' usando código personalizado para exibir um arquivo de todas as nossas receitas.

Antes de prosseguir, porém, devemos ter certeza de que nosso argumento de arquivo de postagens personalizadas está definido como verdadeiro. Volte ao seu código em functions.php onde você registra o tipo de receitas e adiciona 'has_archive' => true, no array arguments.

 function recipes_post_type() { register_post_type( 'recipes', array( 'labels' => array( 'name' => __( 'Recipes' ), 'singular_name' => __( 'Recipe' ) ), 'public' => true, 'show_in_rest' => true, 'supports' => array('title', 'editor', 'thumbnail'), 'has_archive' => true, ) ); } add_action( 'init', 'recipes_post_type' );

Depois disso, vá para Configurações> Permalinks e salve novamente para garantir que você não receba um erro 404 (como mencionamos anteriormente).

Agora, na página de construção do menu, adicione o link personalizado para a página de arquivos. O texto do link pode ser “Todas as Receitas”.

A URL deve ser “/?post_type=recipes”, se seus permalinks estiverem definidos como “Plain” e '/recipes/' se permalinks estiverem definidos como “Post name”.

Adicione o item de menu e vá para o seu site e clique no link. Agora você deve ver todas as postagens de receitas em uma visualização de arquivo.

Leitura adicional

  • Crie tipos de postagem personalizados do WordPress usando um plug-in
  • Tipos de postagem personalizados do WordPress – Levando mais longe
  • Crie tipos de postagem personalizados do WordPress usando seu próprio plug-in!

Conclusão

A maneira de abordar os tipos de postagem personalizados que examinamos neste artigo pode parecer confusa no início (especialmente quando comparada à facilidade de criar tipos de postagem personalizados usando um plug-in). No entanto, se você estiver disposto a perseverar, codificar seus próprios tipos de postagem personalizados tem suas vantagens, ou seja, você não depende de um plug-in, caso esse plug-in pare de funcionar ou fique sem suporte.