Usando taxonomia e posts personalizados no WordPress 3.0
Olá pessoal, faz tempo que não posto nada aqui no blog, porém venho com uma dica que provavelmente vai ajudar muita gente. Há muitos tutoriais sobre como registrar posts e taxonomia personalizada, porém não achei nenhum que mostre (de uma forma clara e objetiva)como usá-los no desenvolvimento de um tema, o que vamos ver neste tutorial é o seguinte:
Vamos fazer uma simulação para uma area especifica de um site que terá artigos sobre Séries de TV(então o novo tipo de post será séries) e serão classificados por genêros(então nossa nova taxonomia será genêro), por exemplo, ficção cientifica, terror, comedia(esses são os termos)…
Para registrar um post personalizado faça o seguinte:
Abra o arquivo functions.php do seu tema e digite o seguinte:
add_action('init', 'series_register');
function series_register() {
$labels = array(
'name' => __('Séries'),
'singular_name' => __('Séries'),
'add_new' => __('Nova Série'),
'add_new_item' => __('Adicionar nova serie'),
'edit_item' => __('Editar Série'),
'new_item' => __('Nova Série'),
'view_item' => __('Ver Série'),
'search_items' => __('Buscar Série'),
'not_found' => __('Nenhuma série encontrada'),
'not_found_in_trash' => __('Nada encontrado na Lixeira'),
'parent_item_colon' => ''
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'query_var' => true,
'rewrite' => true,
'capability_type' => 'post',
'hierarchical' => false,
'menu_position' => null,
'supports' => array('title','editor')
);
register_post_type( 'series' , $args );
}
Já registramos nosso novo post series (register_post_type( ‘series’ , $args );, para saber mais sobre cada parâmetro da função clique no link – http://codex.wordpress.org/Function_Reference/register_post_type.
Agora vamos registrar nossa nova taxonomia genêro, no mesmo arquivo functions.php digite:
$labels = array(
'name' => __( 'Gêneros'),
'singular_name' => __( 'Gênero'),
'search_items' => __( 'Buscar' ),
'popular_items' => __( 'Mais usados' ),
'all_items' => __( 'Todos os Gêneros' ),
'parent_item' => null,
'parent_item_colon' => null,
'edit_item' => __( 'Add novo' ),
'update_item' => __( 'Atualizar' ),
'add_new_item' => __( 'Adicionar novo Gênero' ),
'new_item_name' => __( 'Novo' )
);
register_taxonomy('genero', array('series'),
array(
'hierarchical' => true,
'labels' => $labels,
'singular_label' => 'Gênero',
'all_items' => 'Todos os Gêneros',
'query_var' => true,
'rewrite' => array( 'slug' => 'genero' ))
);
E importante observar a linha - ‘rewrite’ => array( ‘slug’ => ‘genero’ )) – onde é reescrito a slug da taxonomia, se você quizer pode deixar ‘rewrite’ => array( ‘slug’ => ‘series/genero’ )) , assim a url fica mais organizada, por exemplo, http://www.dominio.com/series/genero/drama/ e não http://www.dominio.com/genero/drama/ o que ficaria estranha, porém caso você precise usar essa taxonomia em mais de um post personalizado, irá dar problema.
para saber mais sobre cada parâmetro clique no link – http://codex.wordpress.org/Function_Reference/register_taxonomy
Na barra lateral da sua area administrativa deverá aparecer a seguinte estrutura:

Para exibir o post de um tipo de post personalizado basta ter o single.php no seu tema, porém caso você precise exibir este posts de uma forma diferente terá que criar um arquivo single-custom-post.php, então nosso arquivo se chamará single-series.php e será usada sempre que surgir uma url – http://www.dominio.com/series/slug-do-post
Para listar os termos da taxonomia(genero) criada, basta as seguintes linhas:
<ul>
<?php wp_list_categories('taxonomy=genero'); ?>
</ul>
Você pode consultar mais parâmetros da função wp_list_category() no link – http://codex.wordpress.org/Template_Tags/wp_list_categories
A exibição dos posts dos termos é semelhante aos dos posts simples, você só precisará criar um arquivo com o nome taxonomy-taxonomy.php, então nosso arquivo irá se chamar taxonomy-genero.php, assim quando for solicitado, por exemplo a url – http://www.dominio.com/genero/drama, o arquivo taxonomy-genero.php entrará em ação e listará todos os posts assim como o arquivo category.php faz.
Para exibir todos os posts do tipo de post series faremos o seguinte:
Crie um arquivo chamado series.php, abra ele e no topo do documento digite:
<?php
/*
Template Name: Séries
*/
?>
Assim criaremos uma pagina personalizada, então crie uma nova pagina chamada Séries e em Atributos de página escolha o modelo Séries, veja a imagem a baixo.

Agora antes do loop, digite o seguinte:
<?php query_posts( array( 'post_type' => 'series' ) );?>
onde post_type => series, indica o post que será chamado, que no nosso caso é series, para consulta outros parâmetros da função query_posts() acesse – http://codex.wordpress.org/Function_Reference/query_posts.
Nota:
Caso apareça erro 404 ao tentar carregar a alguma pagina, reescreva seu arquivo .htaccess indo em configurações > link permanentes .
É isso pessoal, há muita coisa para ser explicado ainda, mas ficará para outro post, essas novas funções não são um assunto muito complexo e sim muito amplo, dando a possibilidade de fazer muitas coisas, quem tiver algo a perguntar e/ou a acrecentar não hesite em colocar nos comentários.
fonte: http://www.marcelotorresweb.com/blog/