Query posts personalizado
-
Tenho uma página em site com quatro blocos de notícias.
atualmente possui a seguinte sequência:
ESPORTES | CULTURA | POLÍTICA | ENTRETENIMENTO
Em cada bloco são chamadas as últimas 4 notícias postadas na categoria através do
query_posts
.Preciso de uma forma em que possamos, a qualquer momento, inverter a ordem dessas 4 categorias através de um widget ou plugin.
Alguém pode me ajudar?
-
Opa,
Crie uma pagina de opções e depois chame elas no seu template.
De uma olhada: http://codex.wordpress.org/Writing_a_Plugin#WordPress_Options_Mechanism
[]’s
Rafael Cirolini
http://www.geniusdeveloper.com.br/Parceiro, pensando rapidamente acredito que você pode resolver seu problema criando um widget para cada uma das categorias e transformando o local onde elas são exibidas em uma sidebar.
Para criar o widget você pode fazer assim:
<?php
function categoriaA($args) {
// Aqui vai o código que chama os posts da categoria A
}
function registra_widgets() {
register_sidebar_widget(‘Categoria A’, ‘categoriaA’);
}
add_action(‘widgets_init’, ‘registra_widgets’);
?>Para transformar o lugar onde elas são exibidas em uma sidebar e assim poder incluir os widgets você cria um arquivo chamado sidebar-2.php e lá coloca:
<?php if ( !function_exists(‘dynamic_sidebar’) || !dynamic_sidebar(2) ) : ?>
<?php echo “nenhum widget incluido”; ?>
<?php endif; ?>No index, single, page e etc… você substitui o local onde exibia as 4 categorias por:
<?php get_sidebar(2) ?>
rafael,
Estou tentando criar a pagina de opções.
leobaiano,
Já faz um tempo que tento criar os widgets. A minha dificuldade é justamente na terceira linha do seu código:
// Aqui vai o código que chama os posts da categoria A
Ainda não aprendi a inserir nesse espaço o loop para chamar os posts de uma determinada categoria.
Pode me ajudar nessa questão?
Dhony, quando você diz:
Em cada bloco são chamadas as últimas 4 notícias postadas na categoria através do query_posts.
Já tem esse
query_post
montado?Se não tem faz algo mais ou menos assim:
//Define a categoria e a quantidade de posts //O número 1 é o ID da categoria e o 4 a quantidade de posts que serão exibidos query_posts('cat=1&posts_per_page=4'); //inicia o loop if ( have_posts() ) : while ( have_posts() ) : the_post(); // Aqui coloca as tags que exibem o post (the_content...) endwhile; else: echo "Não existem posts nesta categoria"; endif; //Reset na Query wp_reset_query();
O código acima deve ficar no lugar que eu disse pra você colocar o código que chama os posts.
Man, no meu código acima pode existir um erro no
query_posts
, se não funcionar mude para:query_posts('cat=1&showposts=4');
Eu não sei bem se é com
posts_per_page
oushowposts
(sei lá talvez até os dois) que define a quantidade de posts, testa ai e posta aqui o resultado.Pra fazer isso no widget é melhor criar novos objetos WP_Query do que ficar chamando o query_posts direto.
Quando vc chama o query_posts você está sobrescrevendo a query original do WordPress, ou a última que você fez. Isso pode dar alguns resultados inesperados algumas horas.
Para fazer uma nova query e um loop independente, faça assim:
$leftPosts = new WP_Query(...opcoes...); if ($leftPosts->have_posts()) { while ($leftPosts->have_posts()) : $leftPosts->the_post(); the_title(); ... endwhile; }
Desse jeito você pode inclusive fazer todas as queries primeiro e depois intercalar elas no codifgo como quiser…
abs
leogermani, ok muito obrigado.
Não tinha atentado que ficar chamando o query_posts estaria sobrescrevendo a query original do WordPress. Vou estudar mais um pouco sobre isso.
Ainda hoje vou aplicar a solução que você sugeriu.
A idéia aqui, é produzir algo parecido com o que você fez no catracalivre.
A aplicação está nesse vídeo: http://hacklab.com.br/2010/01/22/novo-catracalivre-no-ar/
Dhony, conseguiu resolver seu problema? Se sim seria uma boa marcar o tópico como resolvido.
- O tópico ‘Query posts personalizado’ está fechado para novas respostas.