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:
- Registrando um post e uma taxonomia personalizada
- Como exibir a página do post(como o single.php) do post pernalizado criado
- Como listar os termos de uma taxonomia customizada
- Como exibir todos os posts de um termo da nova taxonomia criada
- Como exibir todos os posts do tipo de post pernalizado criado
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| 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 );
}
|
Agora vamos registrar nossa nova taxonomia genêro, no mesmo arquivo functions.phpdigite:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| $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ãohttp://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:
1
2
3
| <ul>
<?php wp_list_categories('taxonomy=genero'); ?>
</ul>
|
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:
1
2
3
4
5
| <?php
/*
Template Name: Séries
*/
?>
|
Assim criaremos uma pagina personalizada, então crie uma nova pagina chamadaSéries e em Atributos de página escolha o modelo Séries, veja a imagem a baixo.
Agora antes do
loop, digite o seguinte:
1
| <?php query_posts( array( 'post_type' => 'series' ) );?>
|
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: Marcelo Torres