O WordPress permite o armazenamento de diferentes tipos de conteúdo. Esses conteúdos são armazenados no banco de dados na tabela “wp_posts” e diferenciados pela coluna “post_type”.
Nas versões anteriores a 3.0 do WordPress, já era possível a criação de Tipo de Posts Personalizados(Custom Post Types), porém a partir da versão 3.0 foram implementados novos métodos com a finalidade de facilitar e popularizar o uso dos tipos de posts, que na verdade são tipos de conteúdos personalizados.
Tipos de posts padrões
Post
Um “post” (no banco de dados “post”) é o principal tipo de conteúdo utilizado, os Posts normalmente são exibidos em um blog ordenados cronologicamente. E também são usados na publicação dos feeds.
Páginas
Uma “página” (no banco de dados “page”) é muito parecio com um post, porém não faz parte da mesma estrutura cronológica dos posts. Veja algumas diferenças importantes entre Posts e Páginas:
- Páginas não são organizadas cronologicamente;
- Páginas possuem uma estrutura de URL própria, podendo ser acessadas a partir da URL do site principal;
- Páginas podem utilizar Modelos de Páginas especiais;
- Páginas também podem ser organizadas dentro de uma estrutura hierárquica;
Anexo
Um “anexo” (no banco de dados “attachment”) é um post especial que contém informações sobre arquivos enviados através do sistema de upload de mídia.
Revisões
A “revisão” (no banco de dados “revision”), é usada para armazenar um rascunho de todos os posts (posts) e páginas (pages) existentes.
Menus de Navegação
Um “menu de navegação”(no banco de dados “nav_menu”), é usado para armazenar todas as informações relacionadas aos menus de navegação, outra implementação que só está disponível a partir do WordPress 3.
Agora que já sabemos quais são os cinco tipos de posts padrão do WordPress, vamos ver como são criados novos tipos de posts personalizados.
Tipos de Posts Personalizados
Para adicionar um tipo personalizado no WordPress 3.0, é preciso usar a função register_post_type. Esta função permite que você defina o tipo de post e como ele se comporta dentro do WordPress.
Registrando um tipo de post personalizado:
[sourcecode language=”php”]add_action( ‘init’, ‘create_post_type’ );
function create_post_type() {
register_post_type( ‘noticias’,
array(
‘labels’ => array(
‘name’ => __( ‘Notícias’ ),
‘singular_name’ => __( ‘Notícia’ )
),
‘public’ => true,
)
);
}[/sourcecode]
O código acima cria um tipo de post “noticias”, ou seja, toda vez que criado um post com este tipo, no banco de dados na tabela “wp_posts” na coluna “post_type” referente a este post, contará o valor “noticias”. A função register_post_type possui diversos parâmetros, no exemplo acima foram usados dois principais, o primeiro é o “labels”, que define o nome do novo tipo personalizado, o plural e o singular. O segundo é “public”, que é uma flag para mostrar o tipo de post na seção de administração do site, e para fazê-lo aparecer no site principal, se é adicionado nas queries ou não.
Você pode personalizar várias informações sobre o tipo personalizado, para saber mais sobre os outros parâmetros acesse a documentação da função register_post_type.
Exibindo o conteúdo na interface do website
Para fazer consultas específicas e trazer apenas posts do tipo personalizado que você deseja, você pode utilizar o parâmetro “post_type” em um objeto WP_Query sempre que precisar, por exemplo:
[sourcecode language=”php”]$loop = new WP_Query( array( ‘post_type’ => ‘noticias’, ‘posts_per_page’ => 10 ) );
while ( $loop->have_posts() ) : $loop->the_post();
echo ‘<h3>’;
the_title();
echo ‘</h3>’;
echo ‘<div>’;
the_content();
echo ‘</div>’;
endwhile;
[/sourcecode]
O código acima mostrará os 10 últimos posts do tipo noticias inseridos no painel administrativo.
Plugins para Custom Post Types
- Custom Post Types UI
- Easy Post Types
Fonte: Utilizando Custom Post Types no WordPress 3
isso vai depender de como voce vai gerar o conteudo, por exemplo voce pode criar um template para uma determinada categoria ou tag e depois editar o desenho do jeito q voce quizer, para fazer isso voce so tem q fazer um aquivo assim: category-ID da categoria.php ou se voce quer um single para essa gategoria você tem q criar assim: single-ID da categoria.php.