Gostei da ideía e fui tentar fazer funcionar.
Bom tá ai meu resultado de categorias sendo listadas em ordem aleatória.
/* Ordem aleatória para posts listados por categoria.*/
function categoria_rand_filter($query) {
if (is_category()) {
$query->set('orderby','rand');
}
return $query;
}
add_filter('pre_get_posts' , 'ot_categoria_rand_filter');
Não acredito que dê erro, mas se der página inválida entre em seus permalinks e sem alterar nada clique no botão para salvá-los.
Outra opção é duplicar o archive.php e renomear para category.php.
Aí, mude o query_posts para:
query_posts($query_string . "&orderby=rand");
Assim vc tem mais controle sobre a forma que as categorias serão mostradas, tornando-as independente da página de arquivos.
É muito boa a idéia. Eu uso isso para listar as promoções do meu site aleatóriamente em meu site http://www.groairas.com.
o código que eu uso é o seguinte:
<!-- promoções -->
<!--// faco o loop so da categoria trago os posts aleatóriamante-->
<?php $recent = new WP_Query("cat=47&showposts=3&orderby=rand"); while($recent->have_posts()) : $recent->the_post();?>
<!--\\ crio o link no titulo-->
<div class="bottomcontainer"> <a href="<?php the_permalink(); ?>" rel="bookmark">
<a href="<?php the_permalink() ?>" rel="bookmark"><img src="<?php bloginfo('template_directory'); ?>/includes/timthumb.php?src=<?php get_thumbnail($post->ID, 'full'); ?>&h=120&w=280&zc=1" alt="<?php the_title(); ?>" /> </a></div>
<h2><a href="<?php the_permalink(); ?>" rel="bookmark">
<?php the_title(); ?>
</a></h2>
<?php the_content_limit('130'); ?>
</div>
<?php endwhile; ?>
<!-- termina promoções -->
Neste caso adaptei para o que eu queria mas ai vai do jeito que quiserem estilizar e mostrar além do uso que quiserem fazer.
Nesse código eu puxo a imagem de miniatura do post também.
Ok Myst1010,
me desculpe a inesperiencia, mas vc criou esta nova função e gravou no funcitions.php ?
e depois ? tem como me ajudar com isso.
vlw
Sim eu fiz esta função com base em outra que já tenho.
E sim, se deve colocar no function.
Depois vc não precisa fazer mas nada, sua página que mostram as categorias será igual a que vc estava usando, se tiver criado algum código extra pode remover e criar uma página normal com um loop normal.
===========================================
Nota: Em uma outra ocasião se ninguém falar que a função deve estar em determinado lugar específico imagine logo que é para colocá-la no function.
Nós depois de um tempo ficamos tão acostumados que esquecemos de avisar sobre isso, mas basicamente se for para mudar alguma coisa no tema a função deve ser colocada no function.php do tema.
============================================
O que essa função faz é passar para o sistema antes dele criar o loop que vc quer os posts em ordem aleatória.
A vantagem dessa função é que o sistema não precisa fazer duas vezes a mesma coisa, evitando assim um pouco de carga extra para mostrar o loop da página de categorias.