Desde a versão 2.9, o WordPress introduziu a capacidade de usar tipos de postagem personalizados. Agora, com a versão 3.0, as coisas vão um pouco mais longe com a opção de criar painéis para seus tipos de postagem personalizados. Neste tutorial, mostraremos como implementar Tipos de Postagem Personalizados em seu site no seu site WordPress.
Criando Tipos de Postagem Personalizados – Usando Plugins
A partir da versão 3.0, o WordPress não possui nenhuma interface de usuário (UI) integrada para criar tipos de postagem personalizados. Existem apenas duas opções que podemos usar para criar tipos de postagem personalizados: plugins ou codificá-los diretamente no arquivo functions.php do seu tema. Primeiro, vamos ver como podemos usar plugins para criar tipos de postagem personalizados.
Custom Post Type UI

Custom Post Type UI é um plugin desenvolvido por Brad Williams da WebDevStudios que permite criar facilmente tipos de postagem e taxonomias personalizadas. Uma das funcionalidades mais legais deste plugin é que ele gera um código para criar tipos de postagem personalizados, para que você possa colá-lo no arquivo functions.php do seu tema. Uma das peculiaridades deste plugin é a incapacidade de compartilhar taxonomias entre todos os seus tipos de postagem.

No painel Custom Post Type UI, clique em "Adicionar Novo".

Em seguida, você terá algumas opções para preencher. O “Nome do Tipo de Post” é o que o WordPress usará para consultar todos os posts desse post_type. O “Rótulo” é o que será exibido na barra lateral do seu Painel, assim como o menu regular “Post”. Se você expandir as “Opções Avançadas”, verá mais algumas opções que pode configurar. A maioria é autoexplicativa, como “Público” e “Mostrar UI”. O primeiro, quando definido como verdadeiro, permite que o menu do tipo de post personalizado seja exibido na barra lateral, e o outro (mostrar UI), quando definido como verdadeiro, gera o painel do menu.
“Reescrever” é o que permite que o tipo de post personalizado use URLs Amigáveis para SEO do WordPress (Permalinks). O “Slug de Reescrever Personalizado” pode ser definido como o que você quiser. O WordPress usará este slug para gerar os permalinks. Portanto, se tivermos exemplo.com com um slug de reescrever personalizado de “filmes”, o permalink do seu tipo de post personalizado ficaria assim: exemplo.com/filmes
A função “Variável de Consulta” do WordPress permite que você consulte os posts do seu tipo de post personalizado. Portanto, se usarmos o exemplo dado anteriormente, para acessar um post com o título, Meu Primeiro Post de Filme, que foi escrito sob o post_type Filmes, podemos inserir exemplo.com/?filmes=meu-primeiro-post-de-filme. Assim, a variável de consulta se parece com isto: ?nomedotipodepost
Finalmente, você pode escolher os diferentes recursos suportados pelo seu tipo de post personalizado, como miniaturas/imagem destacada e excertos.

Criando Tipos de Post Personalizados – Usando o arquivo Functions.php

Se você preferir usar tipos de post personalizados sem um plugin, basta adicionar o seguinte código ao arquivo functions.php do seu tema:
// Creates Movies post type
register_post_type('movies', array(
'label' => 'Movies',
'public' => true,
'show_ui' => true,
'capability_type' => 'post',
'hierarchical' => false,
'rewrite' => array('slug' => 'movies'),
'query_var' => true,
'supports' => array(
'title',
'editor',
'excerpt',
'trackbacks',
'custom-fields',
'comments',
'revisions',
'thumbnail',
'author',
'page-attributes',)
) );
Vamos dissecar o código.
register_post_type( $post_type, $args ): Esta função aceita dois parâmetros, $post_type ou o nome do tipo de post, e $args, um array de argumentos.
label: Nome plural dado ao tipo de postagem que é exibido na barra lateral do painel de administração.
public: true/false. Permite que a interface do administrador seja preenchida com postagens desse tipo.
show_ui: true/false. Mostra ou oculta uma interface padrão para gerenciar este tipo de postagem.
capability_type: Padrão: post Tipo de postagem a ser usado para verificar as permissões de leitura, edição e exclusão.
hierarchical: Se o tipo de postagem é hierárquico.
rewrite: true/false. Padrão: true Se o argumento slug for inserido, o nome do slug será anexado às postagens.
query_var: true/false Define o nome do tipo de postagem como uma variável de consulta.
supports: Padrão: title e author Define diferentes recursos de suporte que o tipo de postagem permite.
Visite o WordPress Codex para mais informações sobre register_post_type().
Exibindo Postagens de Tipos de Postagem Personalizados
Para exibir as postagens do seu tipo de postagem personalizado, adicione os seguintes códigos ao loop. Substitua “name” pelo nome do seu tipo de postagem. Observação: você não precisa adicionar os tipos de postagem personalizados no seu arquivo index.php. Você pode criar uma página personalizada do WordPress e executar a seguinte consulta dentro de o Loop.
$query = new WP_Query( 'post_type=name' );
Para exibir postagens de mais de um tipo de postagem, altere o código acima para o seguinte. Altere movies com o nome do seu tipo de postagem personalizado.
$query = new WP_Query( array( 'post_type' => array( 'post', 'movies' ) ) );
O código acima exibirá todas as postagens do tipo de postagem regular (post) e do tipo de postagem personalizado, movies.
É isso. Esperamos que este tutorial tenha sido útil e não se esqueça de postar quaisquer perguntas nos comentários.

Gaby Izarra
Ok, estou tendo um pequeno problema e você pode ser capaz de ajudar... aqui está minha página do fórum do Wordpress. Estou tentando adaptar uma lista de eventos de um tema diferente para o que estou usando.
http://wordpress.org/support/topic/php-query-for-custom-post-type-not-displaying-creating-theme-event-list?replies=1#post-5587886
dave
Criei dois tipos de postagem personalizados, mas apenas o primeiro está aparecendo na minha página. Adicionei isto
$query = new WP_Query( array( ‘post_type’ => array( ‘post’, ‘featured’, ‘latest’ )
) );
dentro do meu arquivo de loop, mas nada. como posso resolver isso?
Jeroen
Você sabe como posso adicionar tipos de postagem personalizados à página de arquivo do blog e ao feed RSS?
WPBeginner Support
Sim, temos guias sobre ambos os tópicos. Por favor, confira como criar uma página de arquivo de tipos de postagem personalizados no WordPress, e como adicionar tipos de postagem personalizados ao seu feed RSS principal do WordPress.
Admin
wizdom networks
Primeiramente, ótimo artigo! Estou trabalhando na implementação de tipos de postagem personalizados via código. Vale notar que a documentação atual do WordPress (http://codex.wordpress.org/Function_Reference/query_posts) especifica que a função query_posts geralmente não deve ser usada e que o hook pre_get_posts é usado para modificar consultas.
“É fortemente recomendado que você use o filtro pre_get_posts em vez disso, e altere a consulta principal verificando is_main_query”
Novamente, ótimo artigo, obrigado por compartilhar.
Abraços.
WPBeginner Support
Obrigado Wisdom, atualizamos o artigo com WP_Query
Admin
Thom Abbott
UAU… para um novato que usa o WP para gerenciar seu site, isso não é nada para iniciantes! Provavelmente terei que procurar algum desenvolvedor WP para configurar minha página personalizada que eu quero.
Equipe Editorial
Tipos de Postagem Personalizados foram criados para desenvolvedores estenderem a funcionalidade do WordPress. Nunca foi feito para iniciantes.
Admin
mark shirley
query_posts( ‘post_type=movies’);
?>
Não consigo fazer isso funcionar no meu tema filho twentyeleven, na página de template, onde eu colocaria isso para puxar uma página de filmes. Na verdade, são os excertos que eu realmente quero. Obrigado Mark
muntzdesigns
Ao usar este plugin e adicionar o código acima ao loop.php, você perderá o controle sobre as categorias... meu tipo de post personalizado é adicionado a todas as categorias... alguma ajuda?
wpbeginner
@muntzdesigns É por isso que você tem múltiplos loops... seu loop principal do blog, archive.php, category.php etc... Em um site com design personalizado, você terá que utilizar isso para que funcione adequadamente.
muntzdesigns
@wpbeginner@muntzdesigns Então, basta adicionar o código acima a todos os arquivos? (loop.php, archive.php e category.php). Obrigado.
wpbeginner
@muntzdesigns Não. Você só adiciona o código nas páginas iniciais. O problema que você teve foi que os tipos de post personalizados estavam sendo adicionados a todas as categorias... Você precisa adicionar o código acima apenas ao loop principal. Em seguida, crie um novo loop para o arquivo de categoria, arquivo de taxonomia, arquivo de autor...
PriyaVerma
Ótimo artigo, muito obrigado
dazuaga
Não, eu estava errado.
dazuaga
Deixe pra lá: %category%/%type%/%postname% Eu acho que vai resolver
dazuaga
O que exatamente faz o Identificador de Tipo de Conteúdo no plugin CMS Press? Estou procurando uma maneira de prepend o slug da categoria ao tipo de post personalizado (exemplo.com/categoria/tipo_post/nome_post), mas ao usar %category%/%identifier%/%postname% em Identificador de Tipo de Conteúdo, ele se transforma automaticamente desta forma: %categoryidentifierpostname
murphymakes
informações excelentes como sempre. obrigado
whimba
I like Custom Post Type UI. It’s light and easy to use but is limited in functionality. So I created my own – http://wordpress.org/extend/plugins/mp-former/. You can try it
simplywendz
Este é um ótimo tutorial para criar um post personalizado no WordPress. As etapas são dadas em detalhes, qualquer um poderia seguir facilmente. Isso é uma grande, grande ajuda!
hoss9009
Eu também tenho me perguntado isso!!
Portador de Cálice
Uau, eu tinha todo o negócio do CMS Press funcionando, mas não conseguia descobrir como fazê-lo aparecer nas postagens. Acho que já existe há tanto tempo que todo mundo assume que já deveria ser conhecido. Resposta perfeita para fazer meu Tipo de Postagem Personalizado aparecer no Loop.
Jerry Craig
Copeiro
Noel Boaz
Obrigado, isso me ajudou muito a colocar meu tipo de postagem personalizada na página inicial. Definitivamente marcado nos favoritos, obrigado.
Ed
Eu tentei o plugin, muito impressionante. No entanto, estou tentando fazer com que um atributo de página apareça nos atributos de 'Páginas' do meu tema, ou seja, a capacidade de usar uma opção de página de largura total. Devo assumir que seu plugin apenas puxa atributos de layouts de tipo de postagem em vez de layouts de tipo de página? Tudo o que quero é ter a opção de definir uma postagem para um modelo completo e pré-determinado.
Ótimo trabalho, no entanto – usarei isso muito.
Saudações
Ed
Simon
Eu tentei o método do plugin, mas não consegui fazer a postagem aparecer. Talvez seja porque eu não consegui encontrar o arquivo loop.php.
De qualquer forma, muito obrigado, tenho certeza de que funcionará em breve.
Quero dizer que uma coisa super incrível que seria ótimo fazer com o WordPress é ter a possibilidade de criar visualizações personalizadas de conteúdo, assim como no Drupal com o módulo Views.
Eu sei que existe um plugin chamado Pods e Pods CMS que supostamente torna isso possível. Talvez você possa pedir ao desenvolvedor para ajudar em uma postagem no wpbeginner se você não entender nada disso como eu. Tenho certeza de que muitas pessoas adorariam isso. Apresentar visualizações é o que realmente torna um CMS um CMS verdadeiramente dinâmico, afinal.
Equipe Editorial
O loop.php pode não existir no seu tema. O loop também pode ser encontrado em seu index.php, archive.php, category.php etc. Você também pode criar um loop personalizado, se desejar.
Admin
Peter
Bom tutorial, obrigado por compartilhar.
Tenho uma dúvida sobre isto.
Criei um tipo de post personalizado através do functions.php (um calendário) que tem uma caixa de metadados personalizada na interface de administração. Esta caixa de metadados usa jQuery em um campo.(http://jqueryui.com/demos/datepicker/).
Para que este datepicker funcione, preciso incorporar os scripts necessários.
add_action(‘admin_enqueue_scripts’,’enqueue_my_scripts’);
funciona, mas meus scripts são carregados em toda a interface de administração. (o que interfere no jQuery padrão do admin do WP)
Então, o que preciso é do hook para o meu tipo de post personalizado.
isto:
add_action(‘register_post_type’,’enqueue_my_scripts’);
não funciona porque register_post_type não é um hook.
Então, qual é o hook para um post_type personalizado?
Amanda
Você pode tentar adicionar o seguinte à sua definição de função antes de registrar o script:
if(is_admin()) return;Então algo como:
function some-function(){
// não precisamos disso em páginas de admin, então...
if(is_admin()) return;
// registra o script personalizado
wp_enqueue_script( 'some-script' );
}
Evan
Como faço para que cada tipo de conteúdo apareça no loop? Quero dizer, é quase como o Tumblr. Se eu postar uma imagem... preciso personalizar o código no loop – o mesmo que quando posto um link.
Equipe Editorial
Você pode ver na postagem, há uma opção para mostrar tanto tipos de postagem personalizados quanto postagens dentro de um único loop…
Admin
Michael
Não consigo fazer o loop funcionar para consultar postagens do meu tipo personalizado. Seu exemplo parece simples o suficiente, então tentei o seguinte $var = query_posts( ‘post_type=sponsor’);
Então comecei um loop
while ($var ->have_posts()) : $var ->the_post();
Faça coisas
endwhile;
isso retorna um erro de php:
Fatal error: Call to a member function have_posts() on a non-object in single-sponsor.php on line 22
a linha 22 é a linha com o loop while.
Ideias? O que estou fazendo de errado?
Romero
Eu tentei criar uma tag para campo personalizado, e quando uso get_the_tags dentro do loop de tipo personalizado, ele não imprime nada.
Alguma sugestão?
Jan
Estou muito animado com este novo recurso ^-^ Você fez um bom vídeo. Embora no seu exemplo, por que usar tipos de postagem personalizados e não apenas criar uma categoria livros e filmes para as postagens? Dessa forma, você economiza todo o incômodo de um tipo de postagem personalizado.
Equipe Editorial
Primeiro, ele permite que você organize as coisas de forma diferente. Segundo, você pode ter um painel de escrita completamente diferente com opções diferentes. Ele permite muito mais personalizações…
Admin
Sandra
Obrigado por este ótimo artigo! Sou um iniciante em wp e talvez você possa me ajudar com esta pergunta:
É possível exibir arquivos de um tipo de post personalizado na barra lateral como se pode fazer usando o plugin "display archives by cat" de kwebble?
Equipe Editorial
Sim, é possível exibir tipos de postagem personalizados como arquivos. Basta criar um loop personalizado na barra lateral para exibir postagens ou categorias de um tipo de postagem específico.
Admin
lukeMV
Existem guias fáceis de entender sobre como adicionar opções aos posts personalizados? Por exemplo, se um filme é drama, comédia, terror…. para ter essas opções como caixas de seleção DENTRO do painel de edição de postagem personalizada? Não consigo encontrar um guia ou plugin para isso.
Paul
Oi, esse foi um ótimo artigo. Eu esperava que você soubesse a resposta para minha pergunta.
Nas últimas duas linhas você tem:
isso retorna todas as postagens e tipos de postagem chamados movies.
Você sabe como retornar ambos os tipos de postagem chamados 'movies' e postagens na categoria 'movies', mas excluir todas as outras postagens que não têm essa categoria??
Equipe Editorial
Você usaria os parâmetros de categoria para query_posts – http://codex.wordpress.org/Function_Reference/query_posts
Admin
Walter
Você pode dar um passo atrás: Por que preciso de tipos de postagem personalizados em primeiro lugar? Qual é o caso de uso?
Equipe Editorial
Tipos de Postagem Personalizados são bons para usuários que usam o WordPress para mais do que um Blog, por exemplo, um CMS. Digamos que você queira ter um site que tenha seu portfólio e seu blog. Obviamente, você não quer que seus blogs tenham a mesma aparência do seu portfólio. É aí que os tipos de postagem personalizados entram em jogo. Este é um recurso muito versátil para levar o WordPress para o próximo nível. Para o usuário médio de blog, eles provavelmente não precisam de tipos de postagem personalizados.
Admin
Tracy B.
Ok, mas ainda estou tentando entender a diferença entre isso e apenas categorizar as coisas. Já fiz muitos sites para pessoas onde páginas separadas fazem coisas como listar apenas a categoria "eventos atuais" e outra a categoria "projetos" ou o que for. Como isso é melhor?
Equipe Editorial
Isso é melhor em termos de organização. Você pode ter taxonomia personalizada, painel de escrita, etc. para um tipo de postagem específico.
Chris
Não posso deixar de pensar que isso teria sido mais útil se você tivesse mostrado algo fora do comum com os tipos de postagem, em vez de usar o velho "filmes e livros".
Que tal um sideblog usando tipos de postagem, ou algo um pouco mais prático? Tudo isso faz é reafirmar o que o WP Codex eventualmente terá, se já não estiver lá.
Equipe Editorial
Lamentamos que você se sinta assim, Chris. O WP Codex não terá um vídeo que mostre como fazer isso. Não importa os nomes que usamos para os tipos de postagem personalizados, a ideia é como adicioná-los. Não criaremos um site extraordinário apenas para escrever um post sobre tipos de postagem personalizados. Se você busca esse conhecimento, provavelmente é melhor fazer você mesmo. Este blog ainda precisa atender às necessidades dos usuários iniciantes, por isso compartilhamos o método do plugin.
Admin
Kevin Elliott
Isso funcionará no WordPress 2.9 ou é apenas para 3.0?
Tentei usar o 3.0, mas aconteceu um problema estranho em que nenhum dos meus plugins ativou, mesmo aqueles que diziam que ativaram. Foi muito estranho!
-Kevin
Equipe Editorial
Isso funcionaria com a versão 3.0, então use-a apenas na 3.0. Tente reinstalar o WordPress 3.0, estamos executando alguns sites nele.
Admin
Marc
Acabei de assistir ao vídeo…
É verdade que precisamos editar arquivos php (= codificar manualmente) para fazer tudo funcionar?
Equipe Editorial
Não, você tem que fazer um ou outro. Em nosso vídeo, mostramos as duas maneiras. Ou você pode fazer do jeito da codificação manual, ou do jeito do plugin.
Admin
Marc
Allright, I see, thnx!
Então, suponho que você começou do jeito da codificação manual? Na época, vendo apenas todas as coisas de código, eu desisti. Portanto, acho que não vi o jeito do plugin…
Rilwis
Artigo muito bom. O plugin Custom Post Type UI tem opções muito semelhantes ao código PHP puro de registro de tipos de postagem, o que é ótimo para desenvolvedores.
Obrigado por apresentar muitos plugins úteis para trabalhar com tipos de postagem personalizados.
Kaye Media
Ótimo artigo, ansioso pelo Wp3 =)
Bryan
Fico feliz que o Wordpress tenha integrado tipos de postagem personalizados diretamente no framework do wp. No entanto, não estou vendo como isso é melhor do que usar plugins já disponíveis, como Magic Fields ou Flutter. Com esses plugins, você obtém o mesmo efeito, além de campos personalizados fáceis de configurar com muitos tipos diferentes e flexibilidade em como inserir e exibir seus dados. O wp 3.0 suporta algo assim logo de cara?
Equipe Editorial
Você pode criar uma interface de usuário para campos personalizados e praticamente qualquer coisa no backend com Tipos de Postagem Personalizados. Você está certo de que esses plugins facilitam muito para os usuários, mas se algum desses plugins falhar no desenvolvimento, você ficará sem opções.
Admin
Bryan
Justo. Brinquei um pouco com o beta, mas não tanto quanto deveria, suponho. Seria emocionante se fosse mais nessa direção. Como me tornei experiente usando esses plugins, quase não faço um site agora sem um
Então seria ótimo se todas essas ferramentas estivessem disponíveis e fossem tratadas dentro do aplicativo original. Posso ver isso levando a um melhor gerenciamento de backend e incentivando mais pessoas a contribuir em vez de um grupo menor apoiando um plugin específico.
Ian
Acho que eles deixaram intencionalmente parte do código de tipos de postagem personalizados como código. Para permitir que o usuário médio tenha que lidar com isso.
Abdul Wahid
Este é um artigo incrível
ravalde
Não consigo exibir nenhuma taxonomia no twentyeleven, nem encontro um tutorial que me mostre como do início ao fim, todos parecem focar no twentyten e no loop