Como faço para obter wordpress para substituir uma consulta posts anteriores?

votos
1

Eu tenho uma página que tem uma lista de categorias no topo, e normalmente deve listar os posts abaixo dela. A lista de categorias é criado usando:

    <?php $display_categories = array(4,7,8,9,21,1); $i = 1;
foreach ($display_categories as $category) { ?>
<?php single_cat_title(); ?> //etc
</div>
    <?php } ?>

No entanto, isso parece fazer os postes ordem pós circuito por categoria. Eu quero que ele ignorar categoria ordenação e ordem por data em ordem decrescente. Eu criei um novo WP_Query pois de acordo com os documentos que você não pode usar query_posts () duas vezes, por isso apenas no caso.

    <?php $q = new WP_Query(cat=-1&showposts=15&orderby=date&order=DESC);
    if ( $q->have_posts() ) : while ( $q->have_posts() ) : $q->the_post(); ?>
    the_title(); // etc
    endwhile; endif; ?>

No entanto, isso ainda parece ser pedidos por categoria (da mesma ordem que a lista acima) e depois por data, ao invés de apenas por data.

Publicado 03/03/2009 em 21:27
fonte usuário
Em outras línguas...                            


3 respostas

votos
2

Eu tive problemas com isso antes também.

Tente isto:

      <?php
     global $post;
     $myposts = get_posts('numberposts=5');

     foreach($myposts as $post) : 
     setup_postdata($post);
     ?>
       <div <?php post_class(); ?>>
         <div class="title">
           <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
           <p class="small"><?php the_time('F j, Y'); ?> by <?php the_author(); ?></p>
         </div>
         <?php the_excerpt(); ?>
       </div>
 <?php 
     endforeach; 
 ?> 

A linha importante é '$ post global;'.

Isso deve redefinir sua consulta global. O 'setup_postdata ($ post) método é necessário para dar-lhe acesso a funções como 'the_author ()' ou 'the_content ()'.

-Chris

Respondeu 04/03/2009 em 01:18
fonte usuário

votos
0

Eu não tenho nenhuma experiência com wordpress, mas um par de possibilidades:

  1. Você define o parâmetro "ordem" duas vezes na seqüência que você está chamando query_posts()com, eu não sei se isso causa um problema ou não.
  2. Como assim, "show" não é um parâmetro válido, você pode ter sido procurando "showposts".

Parâmetros e seus efeitos são descritos aqui: http://codex.wordpress.org/Template_Tags/query_posts#Parameters

Respondeu 03/03/2009 em 22:10
fonte usuário

votos
0

query_posts é mimado por vezes. Tente algo como isso e ver se ele funciona:

query_posts(array('category__not_in'=>array(1),
                  'showposts'=>15,
                  'orderby'=>date,
                  'order'=>DESC));

Desde que não é o problema, tente adicionar update_post_caches ($ posts) para o segundo loop, como este:

<?php $q = new WP_Query("cat=-1&showposts=15&orderby=date&order=DESC");
if ( $q->have_posts() ) : while ( $q->have_posts() ) : $q->the_post(); update_post_caches($posts); ?>
the_title(); // etc
endwhile; endif; ?>

Supostamente isso resolve alguns problemas de plugin .

Respondeu 03/03/2009 em 21:55
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more