quarta-feira, 9 de maio de 2012

Como usar Taxonomy e Posts Personalizados Wordpress


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

Registrando um post e uma taxonomia personalizada

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 );
}
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.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:


Como exibir a página do post(como o single.php) do post pernalizado criado

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

Como listar os termos de uma taxonomia customizada

Para listar os termos da taxonomia(genero) criada, basta as seguintes linhas:
1
2
3
<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

Como exibir todos os posts de um termo da nova taxonomia criada

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.

Como exibir todos os posts do tipo de post pernalizado criado

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' ) );?>
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: Marcelo Torres

Nenhum comentário:

Postar um comentário