Tipos de postagens personalizadas são um dos principais elementos que você deve entender se quiser criar sites WordPress flexíveis e de nível profissional.

Quais tipos de postagem personalizada permitem adicionar seu próprio tipo de dados; pode ser um artigo, uma música, um filme ou milhares de outras coisas. Os tipos de postagens personalizadas permitem categorizar seus dados de acordo com suas necessidades individuais, o que, por sua vez, permite que você assuma maior controle sobre o comportamento de seu site.

Neste artigo, acompanho a criação de um tipo de postagem de filme personalizado para um banco de dados de filme.

Por que usar tipos de postagem personalizados?

Para criar um site de filmes, precisamos configurar um banco de dados. Fazer isso sem tipos de postagem personalizados seria extremamente complicado e potencialmente colidir com a nossa instalação existente do WordPress. No entanto, nosso tipo de postagem personalizada terá seu próprio menu de administração e uma página de edição personalizada. Se quisermos, poderemos adicionar taxonomias personalizadas à página com os nomes e propriedades adequados ao projeto.

Tipos de postagem personalizados são o que levam o WordPress de uma plataforma de blog para um CMS completo. Eles nos dão a liberdade de configurar o nosso site de filmes sem nenhum hacker desagradável.

Criando nosso tipo de postagem de filme

Neste artigo, descreverei todo o código necessário para criar um tipo de postagem personalizado e, em seguida, passaremos por ele, linha por linha, para que você possa aprender o que cada parte faz e personalizá-la de acordo com suas necessidades.

Aqui está o código completo que é adicionado ao seu arquivo functions.php :

add_action( 'init', 'register_movie' );function register_movie() {$labels = array('name' => 'Movies','singular_name' => 'Movie','add_new' => 'Add New','add_new_item' => 'Add New Movie','edit_item' => 'Edit Movie','new_item' => 'New Movie','view_item' => 'View Movie','search_items' => 'Search Movies','not_found' => 'No movies found','not_found_in_trash' => 'No movies found in Trash','menu_name' => 'Movies',);$args = array('labels' => $labels,'hierarchical' => false,'description' => 'Here you will add all the movies for the database','supports' => array( 'title', 'editor', 'thumbnail' ),'taxonomies' => array( 'genre', 'movies', 'year' ),'public' => true,'show_ui' => true,'show_in_menu' => true,'menu_position' => 5,//'menu_icon' => the image link here,'show_in_nav_menus' => true,'publicly_queryable' => true,'exclude_from_search' => false,'has_archive' => true,'query_var' => true,'can_export' => true,'rewrite' => true,'capability_type' => 'post');register_post_type( 'movie', $args );}

Como você pode ver, um grande pedaço de código entra na criação de um tipo de postagem personalizado, mas se você entender, poderá obter esse código e adaptá-lo aos seus projetos. Na primeira linha, ligamos a função com o nosso tipo de post personalizado ao init e isso significa que nossa função será acionada quando o WordPress fizer isso para que sempre o tenhamos em nosso painel:

add_action( 'init', 'register_movie' );

Os rótulos

Na próxima linha, começamos declarando o nome de nossa função e uma variável com todos os rótulos que serão associados ao nosso tipo de postagem de filme, para que tudo possa ser personalizado.

A primeira coisa que declaramos nos rótulos é o nome do nosso tipo de postagem personalizado, no formato plural e singular:

'name' => 'Movies','singular_name' => 'Movie',

Nas próximas duas linhas, temos que especificar nosso novo texto Add (se quisermos alterá-lo) e, em seguida, definir Add New Movie para que quando estamos adicionando um novo filme, temos uma experiência personalizada em vez de adicionar um filme e ter um manchete dizendo "Adicionar novo post".

'add_new' => 'Add New','add_new_item' => 'Add New Movie',

Após os rótulos para criar um novo filme, precisamos definir os rótulos para edição, o novo texto do item (por padrão é Novo Post / Nova Página) e também precisamos definir o texto da postagem da exibição:

'edit_item' => 'Edit Movie','new_item' => 'New Movie','view_item' => 'View Movie',

Agora, nos rótulos, passamos para os recursos de pesquisa no WordPress Admin e em nossos rótulos para isso. Precisamos definir rótulos para quando pesquisarmos filmes, quando nenhum resultado for encontrado e também quando nenhum resultado for encontrado na lixeira:

'search_items' => 'Search Movies','not_found' => 'No movies found','not_found_in_trash' => 'No movies found in Trash',

O último rótulo fala por si, aqui temos que colocar o nome que queremos que o tipo de post personalizado tenha no menu UI, nesse caso estamos apenas com “Movies”:

'menu_name' => 'Movies',);

Os argumentos

Agora temos que passar para os nossos argumentos, para isso eu criei outra variável que irá conter todos os argumentos, chamei de args.

O primeiro argumento que ele pede é que os rótulos e tudo o que precisamos fazer é apontar para a variável rótulos que acabamos de examinar, da seguinte forma:

$args = array('labels' => $labels,

Na próxima linha, precisamos definir se o tipo de postagem será hierárquico, como páginas ou não (como postagens). No meu caso, não quero que os filmes sejam hierárquicos, por isso o defini como falso. A próxima linha é apenas uma descrição opcional do tipo de postagem.

'hierarchical' => false,'description' => 'Here you will add all the movies for the database',

A próxima linha é importante. aqui temos que especificar o que o nosso tipo de post personalizado irá suportar, quais campos ele terá. As opções para este campo são:

  • 'título'
  • 'editor'
  • 'autor'
  • 'miniatura'
  • 'excerto'
  • 'trackbacks'
  • 'Os campos personalizados'
  • 'comentários'
  • 'revisões'
  • 'page-attributes'
  • 'pós-formatos'

No meu caso e para o meu tipo de post eu só quero apoiar o título, o editor WYSIWYG , uma miniatura e comentários e para isso eu preciso adicionar uma matriz nesta linha, assim:

'supports' => array( 'title', 'editor', 'thumbnail','comments' ),

Na próxima linha, precisamos especificar quais taxonomias serão usadas e, como criaremos taxonomias personalizadas, essas serão as que serão adicionadas nesta linha:

'taxonomies' => array( 'genre', 'actors', 'year' ),

As próximas três linhas têm a ver com a visibilidade do tipo de postagem na área de administração e tudo o que faço é definir tudo isso como verdadeiro:

'public' => true,'show_ui' => true,'show_in_menu' => true,

Em seguida, passamos para a posição do menu em que o tipo de postagem deve aparecer. Aqui também temos muitas opções para escolher:

  • 5 - Abaixo dos Posts
  • 10 - Abaixo da Mídia
  • 15 - Links abaixo
  • 20 - abaixo das páginas
  • 25 - Abaixo dos comentários
  • 60 - Abaixo do primeiro separador
  • 65 - Abaixo dos Plugins
  • 70 - Abaixo Usuários
  • 75 - Abaixo das ferramentas
  • 80 - Abaixo das configurações
  • 100 - Abaixo do segundo separador

No meu caso, eu queria que os filmes aparecessem imediatamente após as postagens, então defini a posição do menu para 5, assim:

'menu_position' => 5,

Na próxima linha, nós cuidamos do ícone, podemos definir o nosso próprio ícone ou deixar em branco e, em vez disso, obteremos o ícone de postagens, a linha depois disso cuidará do que quisermos que esse tipo de postagem apareça para seleção em nossos menus .

'menu_icon' => //the image link here,'show_in_nav_menus' => true,

Nas próximas 3 linhas adicionamos as capacidades do tipo post; primeiro definimos se queremos que o tipo de postagem seja consultado no front-end, então decidimos se queremos que os resultados do tipo de postagem sejam excluídos das pesquisas e, finalmente, decidimos se queremos um arquivo para o tipo de postagem de filmes:

'publicly_queryable' => true,'exclude_from_search' => false,'has_archive' => true,

Na próxima linha, definimos a variável de consulta para o nosso tipo de postagem e isso definirá a aparência da URL. Para essa opção, temos três parâmetros possíveis: podemos defini-la como verdadeira e, em seguida, podemos alcançar o filme usando /? = name_of_movie; podemos configurá-lo para uma string para que o filme na URL seja substituído por qualquer coisa que desejarmos, como "show", e teríamos que usar /? show = name_of_movie para alcançar o mesmo filme; a última opção é configurá-lo para false e assim você torna impossível alcançar um filme usando o query_var. No meu caso, e com a última opção em mente, configurei minha consulta var como true para que possamos acessá-la com o query_var do filme:

'query_var' => true,

Na próxima linha, decidimos se queremos que os filmes sejam exportáveis ​​e, em seguida, escolhemos o slug para este tipo de post, no meu caso eu apenas prendi com true para ter 'movie' como o slug mas você pode escolher qualquer string para ser o slug e você realmente tem muitas opções, esse parâmetro é extenso.

'can_export' => true,'rewrite' => true,

A linha final de nossos argumentos é onde definimos o tipo de recurso de nosso post e, como eu quero que ele tenha exatamente os mesmos que os posts normais, eu apenas dei a ele o valor de post, assim:

   'capability_type' => 'post');

Nossos rótulos e argumentos são feitos, tudo que precisamos fazer agora é registrar nosso tipo de postagem e a função register_post_type usa dois parâmetros, o primeiro é o nome do nosso tipo de postagem personalizado (tem no máximo 20 letras e sem letras maiúsculas ou espaços) e o segundo são os argumentos para o tipo de post e neste apenas colocaremos nossa variável args:

    register_post_type( 'movie', $args );}

Nosso tipo de post é criado e completamente funcional e tudo que você precisa para que ele apareça em suas páginas é alguma magia wp_query .

Palavras finais

Espero que você veja por que tantas pessoas usam tipos de postagem personalizados no WordPress.

Este artigo foi criado para fornecer uma compreensão do processo de criação de um tipo de postagem personalizado e fornecer um ponto de partida para criar seus próprios tipos de postagem personalizados incríveis.

Imagem em destaque / miniatura, imagem personalizada por ATOMIC Hot Links, via Flickr.