Suporte » Desenvolvendo com WordPress » Posts Mais Votados x Ultimos Posts Adicionados

  • Resolvido fabio23

    (@fabio23)


    ola a todos,tenho um site no wordpress onde a index.php
    possui 2 loops. O primeiro loop exibe os posts mais votados(atraves do plugin wp-rating),e o segundo,os ultimos posts adicionados.
    So que este ultimo loop está ocorrendo um erro .Ao Inves de exibir os ultimos posts,ele exibe os primeiros posts adicionados.Acredito que seja por causa da funcao:
    <?php query_posts($query_string.’&r_sortby=most_rated&r_orderby=desc’) ?>
    que eu coloquei no primeiro loop pra chamar os posts mais votados,pois quando eu tiro este codigo
    o segundo loop passa a exibir da maneira correta os ultimos posts .
    Alguem sabe porque aontece este conflito?ja atualizei o wp-ratings mas o problema continua.

    o codigo index.php:

    <div class=”contentLayout”>
    <div class=”sidebar1″>
    <?php include (TEMPLATEPATH . ‘/sidebar1.php’); ?>
    </div>

    <div id=”content” >
    <div id=”homepage1″>
    <h3>POSTS MAIS VOTADOS</h3>

    <?php query_posts($query_string.’&r_sortby=most_rated&r_orderby=desc’) ?>

    <?php query_posts(‘showposts=5&cat=3’); ?>

    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>

    ” rel=”bookmark” title=”<?php the_title(); ?>”><?php the_title(); ?>
    <div style=”padding: 10px 13px 0px 0px” style=”float:left” id=”rate”><?php if(function_exists(‘the_ratings’)) { the_ratings(); } ?></div>
    <?php endwhile; else: ?>
    <p><?php _e(‘Sorry, no posts matched your criteria.’); ?></p><?php endif; ?>

    </div >

    <div id=”homepage2″>

    <h3>ÚLTIMOS POSTS ADICIONADOS</h3>
    <?php query_posts(‘showposts=5&cat=11’); ?>

    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>

    ” rel=”bookmark”>
    <?php the_title(); ?>

    <?php endwhile; ?>

    <?php endif; ?></div></Center>

    </div>
    </div>
    </div>

    <div class=”cleared”></div>

    <?php get_footer(); ?>

Visualizando 10 respostas - 1 até 10 (de um total de 10)
  • Sim, vc está correto. Dois loops com query_posts na mesma página pode dar conflito. Substitua o primeiro deles por um loop com get_posts que deve estar resolvido.

    http://codex.wordpress.org/Template_Tags/get_posts

    Criador do tópico fabio23

    (@fabio23)

    Renato,tirei todos os query_posts dos loops e troquei as funcoes :<?php if (have_posts()) : while (have_posts()) : the_post(); ?> , <?php endwhile; ?> e <?php endif; ?>

    por:
    <?php
    global $post;
    $myposts = get_posts(‘numberposts=5&offset=1&category=1’);
    foreach($myposts as $post) :
    setup_postdata($post);
    ?>

    e
    <?php endforeach; ?>

    só deixei a funcao que chama os posts mais votados<?php query_posts($query_string.’&r_sortby=most_rated&r_orderby=desc’) ?>
    Mas o problema do conflito continua.Sera que fiz algo de errado?

    Coloque o código inteiro aqui pra eu ver como ficou.

    Criador do tópico fabio23

    (@fabio23)

    <div class=”contentLayout”>
    <div class=”sidebar1″>
    <?php include (TEMPLATEPATH . ‘/sidebar1.php’); ?>
    </div>

    <div id=”content” >
    <div id=”homepage1″>
    <h3>POSTS MAIS VOTADOS</h3>

    <?php query_posts($query_string.’&r_sortby=most_rated&r_orderby=desc’) ?>

    <?php
    global $post;
    $myposts = get_posts(‘numberposts=5&offset=1&category=1’);
    foreach($myposts as $post) :
    setup_postdata($post);
    ?>

    ” rel=”bookmark” title=”<?php the_title(); ?>”><?php the_title(); ?>
    <div style=”padding: 10px 13px 0px 0px” style=”float:left” id=”rate”><?php if(function_exists(‘the_ratings’)) { the_ratings(); } ?></div>
    <?php endforeach; ?>

    </div >

    <div id=”homepage2″>

    <h3>ÚLTIMOS POSTS ADICIONADOS</h3>
    <?php query_posts(‘showposts=5&cat=11’); ?>

    <?php
    global $post;
    $myposts = get_posts(‘numberposts=5&offset=1&category=1’);
    foreach($myposts as $post) :
    setup_postdata($post);
    ?>

    ” rel=”bookmark”>
    <?php the_title(); ?>

    <?php endforeach; ?></div></Center>

    </div>
    </div>
    </div>

    <div class=”cleared”></div>

    <?php get_footer(); ?>

    Faça a seguinte modificação (substitua essa parte do código):

    ...
    <h3>POSTS MAIS VOTADOS</h3>
    
    <?php
    global $post;
    $myposts = get_posts('sortby=most_rated&r_orderby=desc&numberposts=5&offset=1&category=1');
    foreach($myposts as $post) :
    setup_postdata($post);
    ?>
    ...
    <h3>ÚLTIMOS POSTS ADICIONADOS</h3>
    <?php
    global $post;
    $myposts = get_posts('numberposts=5&offset=1&cat=11');
    foreach($myposts as $post) :
    setup_postdata($post);
    ...

    Explicando: quando vc usa get_posts,não precisa do query_posts antes, como vc fez. Vc só tem que usar os parâmetros corretos no get_posts e pronto.

    Criador do tópico fabio23

    (@fabio23)

    renato_s,até funcionou,os “ultimos posts adicionados” estao aparecendo da manira certa,mas agora o que nao funciona é o codigo que chama os posts mais votados.Invés de exibir primeiro os “mais votados”,ele exibe tudo embaralhado.Parece que ignora o comando.

    Tinha um errinho no nome do parâmetro. Deixe assim:
    $myposts = get_posts('r_sortby=most_rated&r_orderby=desc&numberposts=5&offset=1&category=1');

    Criador do tópico fabio23

    (@fabio23)

    renato,tambem nao funcionou,mas eu fui no forum do plugin http://forums.lesterchan.net/index.php/board,17.0.html e achei a tag:<?php remove_filter(‘posts_orderby’, ‘ratings_highest_orderby’); ?>

    Retornei com o codigo que postei la em cima no primeiro post,com as querys, e só adicionei a tag remove_filter depois de <?php endif; ?> do loop “POSTS MAIS VOTADOS” e agora ficou certo.A loop 1 exibe os mais votados,e a lopp 2 os ultimos posts adicionados.
    Mas queria saber se pode dar algum problema em deixar o codigo assim desse jeito?

    Olha, não sei te dizer se daria problema. Eu tentaria acertar os loops sem precisar remover o filtro…

Visualizando 10 respostas - 1 até 10 (de um total de 10)
  • O tópico ‘Posts Mais Votados x Ultimos Posts Adicionados’ está fechado para novas respostas.