WordPress vem com cinco tipos de posts predefinidos: post
page
attachment
revision
, e menu
.
Enquanto desenvolve o seu plugin, pode precisar de criar o seu próprio tipo de conteúdo específico: por exemplo, produtos para um website de comércio electrónico, trabalhos para um website de e-learning, ou filmes para um website de revisão.
Utilizando tipos de posts personalizados, pode registar o seu próprio tipo de post. Uma vez registado um tipo de mensagem personalizada, obtém um novo ecrã administrativo de alto nível que pode ser utilizado para gerir e criar mensagens desse tipo.
Para registar um novo tipo de mensagem, utiliza a função register_post_type().
Recomendamos que coloque tipos de mensagens personalizadas num plugin em vez de num tema. Isto assegura que o conteúdo do utilizador permanece portátil mesmo que o tema seja alterado.
O seguinte exemplo mínimo regista um novo tipo de post, Produtos, que é identificado na base de dados como wporg_product
.
function wporg_custom_post_type() {register_post_type('wporg_product',array('labels' => array('name' => __('Products', 'textdomain'),'singular_name' => __('Product', 'textdomain'),),'public' => true,'has_archive' => true,));}add_action('init', 'wporg_custom_post_type');
Expandir código fonte completoColapsar código fonte completo
Por favor visite a página de referência para register_post_type() para a descrição dos argumentos.
Aviso:
Tem de chamar register_post_type()
antes do admin_init
hook e depois do after_setup_theme
hook. Um bom gancho a usar é o init
gancho de acção.
Nomear Melhores Práticas #Nomear Melhores Práticas
É importante que prefira as suas funções e identificadores de tipo de posto com um prefixo curto que corresponda ao seu plugin, tema, ou website.
Aviso:
Certifique-se de que o seu identificador personalizado de tipo de postagem não excede 20 caracteres, pois a coluna post_type
na base de dados é actualmente um campo VARCHAR desse comprimento.
Aviso:
Para assegurar a compatibilidade directa, não utilize wp_ como seu identificador – está a ser utilizado pelo núcleo do WordPress.
Aviso:
Se o seu identificador for demasiado genérico (por exemplo: “product
“), pode entrar em conflito com outros plugins ou temas que tenham escolhido utilizar esse mesmo identificador.
Nota:
Solucionar identificadores de tipo de correio duplicado não é possível sem desactivar um dos tipos de correio em conflito.
Top
URLs #URLs
Um tipo de post personalizado obtém a sua própria lesma dentro da estrutura URL do sítio.
Um post do tipo wporg_product
utilizará por defeito a seguinte estrutura URL: http://example.com/wporg_product/%product_name%
.
wporg_product
é a lesma do seu tipo de post personalizado e %product_name%
é a lesma do seu produto em particular.
O permalink final seria a lesma do seu tipo de post personalizado: http://example.com/wporg_product/wporg-is-awesome
.
P>Pode ver o permalink no ecrã de edição do seu tipo de postagem personalizada, tal como nos tipos de postagem padrão.
Um Slug personalizado para um tipo de post personalizado #Um Slug personalizado para um tipo de post personalizado
Para definir um slug personalizado para o slug do seu post personalizado digite todos é necessário adicionar uma chave => par de valores ao rewrite
chave no register_post_type()
conjunto de argumentos.
Exemplo:
function wporg_custom_post_type() {register_post_type('wporg_product',array('labels' => array('name' => __( 'Products', 'textdomain' ),'singular_name' => __( 'Product', 'textdomain' ),),'public' => true,'has_archive' => true,'rewrite' => array( 'slug' => 'products' ), // my custom slug));}add_action('init', 'wporg_custom_post_type');
Expandir código fonte completoColapsar código fonte completo
O acima exposto resultará na seguinte estrutura de URL:
Aviso:
Usar uma lesma genérica como products
pode potencialmente entrar em conflito com outros plugins ou temas, por isso tente usar uma que seja mais específica para o seu conteúdo.
Nota:
Embora os identificadores personalizados de tipo de postagem, o problema da lesma duplicada pode ser facilmente resolvido trocando a lesma por um dos tipos de postagem em conflito.
Se o autor do plugin incluiu um apply_filters()
chamar os argumentos, isto pode ser feito programmaticamente substituindo os argumentos submetidos através do register_post_type()
function.