2009-03-03 6 views
1

J'ai une page qui a une liste de catégories en haut, et devrait normalement lister les posts en dessous. La liste de catégories est créée à l'aide de:Comment obtenir wordpress pour remplacer une requête précédente?

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

Cependant, cela semble rendre les messages d'ordre de post-publication par catégorie. Je veux qu'il ignore la classification des catégories et l'ordre par date dans l'ordre décroissant. J'ai créé une nouvelle WP_Query puisque selon les docs, vous ne pouvez pas utiliser query_posts() deux fois, donc juste au cas où.

<?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; ?> 

Cependant, cette encore semble être la commande par catégorie (le même ordre que la liste ci-dessus), puis par date, par opposition à juste par date.

+0

J'ai sunshiiiine ... une journée nuageuse ... – TheTXI

+0

Je voudrais avoir une page. Tout ce que j'ai, c'est la capacité de former des phrases cohérentes. – Pesto

Répondre

2

J'ai eu des problèmes avec ça avant aussi bien.

Essayez ceci:

 <?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; 
?> 

La ligne importante est «post global $;.

Cela devrait réinitialiser votre requête globale. La méthode 'setup_postdata ($ post) est nécessaire pour vous donner accès à des fonctions telles que' the_author() 'ou' the_content() '.

-Chris

0

query_posts est parfois fastidieux. Essayez quelque chose comme ça et voir si cela fonctionne:

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

Depuis ce n'est pas le problème, essayez d'ajouter update_post_caches (messages $) à la seconde boucle, comme ceci:

<?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; ?> 

Soi-disant ce solves some plugin problems.

+0

Merci d'avoir répondu! Cela ne semble pas faire de différence, cependant. –

0

Je n'ai aucune expérience avec wordpress, mais deux possibilités:

  1. Vous définissez le « ordre » paramètre deux fois dans la chaîne que vous appelez query_posts() avec, je ne sais pas si cela provoque un problème ou non.
  2. De même, "show" n'est pas un paramètre valide, vous avez peut-être cherché "showposts".

paramètres et leurs effets sont décrits ici: http://codex.wordpress.org/Template_Tags/query_posts#Parameters

+0

Salut, merci de les remarquer. J'ai mis à jour le code (et le message ci-dessus), mais cela ne semble toujours pas résoudre le problème. –

Questions connexes