Como usar Tipos de Postagem Personalizados no WordPress 3.0

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

UI de Tipos de Postagem Personalizados

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.

Gerar código para Tipos de Postagem Personalizados

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

Botão Adicionar Novo para UI de Tipo de Postagem Personalizado

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.

Opções da UI de Tipos de Postagem Personalizados

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

Codificar Tipos de Postagem Personalizados

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.

Aviso: Nosso conteúdo é apoiado pelos leitores. Isso significa que, se você clicar em alguns de nossos links, poderemos ganhar uma comissão. Veja como o WPBeginner é financiado, por que isso importa e como você pode nos apoiar. Aqui está nosso processo editorial.

O Kit de Ferramentas Definitivo para WordPress

Obtenha acesso GRATUITO ao nosso kit de ferramentas - uma coleção de produtos e recursos relacionados ao WordPress que todo profissional deve ter!

Interações do Leitor

58 CommentsLeave a Reply

  1. 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?

  2. 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.

  3. 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.

  4. 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

  5. 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?

    • @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.

      • @wpbeginner@muntzdesigns Então, basta adicionar o código acima a todos os arquivos? (loop.php, archive.php e category.php). Obrigado.

        • @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...

  6. 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

  7. 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!

  8. 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

  9. 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

  10. 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.

    • 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

  11. 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?

    • 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' );
      }

  12. 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.

  13. 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?

  14. 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?

  15. 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.

    • 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

  16. 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?

    • 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

  17. 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.

  18. Oi, esse foi um ótimo artigo. Eu esperava que você soubesse a resposta para minha pergunta.
    Nas últimas duas linhas você tem:

    query_posts(array('post_type' => array('post', 'movies')));

    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??

    • 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

      • 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?

  19. 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á.

    • 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

  20. 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

  21. Acabei de assistir ao vídeo…

    É verdade que precisamos editar arquivos php (= codificar manualmente) para fazer tudo funcionar?

      • 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…

  22. 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.

  23. 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?

    • 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

      • 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.

        • 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.

    • 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

Deixe uma resposta

Obrigado por escolher deixar um comentário. Por favor, tenha em mente que todos os comentários são moderados de acordo com nossa política de comentários, e seu endereço de e-mail NÃO será publicado. Por favor, NÃO use palavras-chave no campo do nome. Vamos ter uma conversa pessoal e significativa.