Um modo mais inteligente de usar templates para categorias
Se você já é um desenvolvedor de temas para o Wordpress você já deve estar acostumando com o arquivo de template category.php ou category-5.php que usamos quando queremos que a categoria de ID = 5 tenha uma estrutura diferente das outras categorias. O problema deste meio é de que sempre que você for usar o seu tema em outro site provavelmente terá que renomear novamente seus arquivos de templates de categorias pois os IDs não são constantes eles sempre mudam.
Descobri um meio de tornar isto mais simples e fácil, por exemplo, você tem uma categoria no seu site com o nome de Notícias, então você criaria um arquivo chamado:
category-noticias.php
Agora o nome do seu arquivo sera sempre category-( o nome do slug da sua categoria ).php. Slug é um nome criado pelo Wordpress automaticamente ao criar uma categoria é um nome que pode ser usado como um identificador como um ID. Então agora quando você for usar seu tema em outro site, você não vai precisar mais renomear seus arquivos de template, basta se certificar que as categorias possuem os nomes corretos.
Para que isto funcione você precisa colocar o código abaixo no seu arquivo functions.php do seu tema:
add_filter('category_template', 'category_slug_template');
function category_slug_template($template) {
$cat_ID = absint( get_query_var('cat') );
$category = get_category( $cat_ID );
if ( is_wp_error( $category ) )
return false;
$new_template = locate_template(array("category-" . $category->slug . '.php'));
if ( $new_template )
return $new_template;
return $template;
}
5 Comentários
-
oi Mateus. muito boas suas dicas para WP. tentei pelo codex mas não achei a solução… veja se pode me ajudar. na sidebar, quero mostrar uma determinada categoria (id=3 “Especialidades”) e os posts delas. ex:
Especialidades
- post 1 (especialidade1)
- post 2 (especialidade2)
e assim por diante.
pode me dar uma idéia de como fazer isso?
obrigado desde já! -
Oi Marujo, para isso vc vai ter que usar a função query_posts() segue um exemplo:
< ?php query_posts('showposts=4&cat=3'); ?> < ?php // the Loop while (have_posts()) : the_post(); // the content of the post ?> < ?php the_title(); ?> < ?php endwhile; ?> < ?php wp_reset_query(); ?> -
oi Mateus. obrigado pelo retorno. pesquisei bastante e encontrei asolução abaixo, que funcionou também. fica aí de dica. mas vou adaptar com as sintaxes que vc passou. é mais simples. obrigado!!!
Especialidades<a href="”>
-
oi mateus. agora sugiru uma outra dúvida. veja se pode ajudar. na sidebar quero colocar as categorias como selects/dropdowns. tenhov várias categorias. mas quero cada uma, com as sub filhas, como um select separado. por exemplo:
categoria x (select)
- x1
- x2
- x3
categoria y
- y1
- y2
- y3
tentei usando?php wp_dropdown_categories('id=5'); ?>mas não deu certo.
valeu!! -
oi Mateus. ainda não consegui resolver essa questão de colocar cada categoria separada como um select, e ao clicar no select/categoria a pessoa ver as subcategorias. tem alguma sugestão? se puder ajudar, te agradeço desde já. valeu!!