• Resolvido marciovecchi

    (@marciovecchi)


    Olá boa tarde a todos, estou com um problema e não consigo resolver.
    Tenho um site de classificados de imóveis, e assim quando o visitante clique em uma determinada categoria, abre-se a pagina com os resultados daquela categoria.
    Porém aparece os resultados listados em ordem da postagem, ou seja aparece em primeiro o ultumo anúncio postado.
    Gostaria que fosse em ordem aleatória, já tentei assim:

    <?php
    query_posts(array(‘orderby’ => ‘rand’, ‘showposts’ => 10));
    if (have_posts()) :
    while (have_posts()) : the_post();
    the_title(); ?>

    Porém a página exibe resultados aleatórios de todas as categorias, e não da categoria em que foi selecionada pelo visitante.
    Será que alguém pode me ajudar.

    o meu theme usa uma pagina arquive.php que é onde se encontra o código para as categorias. No caso não posso dertminar uma categoria especifica no query_posts, senão só será aberta aquela determinada categoria.

    Quem puder ajudar, agradeço.

Visualizando 5 respostas - 1 até 5 (de um total de 5)
  • 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.

    Criador do tópico marciovecchi

    (@marciovecchi)

    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.

Visualizando 5 respostas - 1 até 5 (de um total de 5)
  • O tópico ‘Posts aleatórios no resultado das categorias’ está fechado para novas respostas.