Comment faire en sorte que wordpress remplace une requête de publication précédente?

StackOverflow https://stackoverflow.com/questions/608025

  •  03-07-2019
  •  | 
  •  

Question

J'ai une page qui a une liste de catégories en haut, et devrait normalement lister les messages en dessous. La liste de catégories est créée avec:

    <?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 la publication de messages boucle ordre par catégorie. Je veux qu'il ignore le classement des catégories et le classement par date dans l'ordre décroissant. J'ai créé un nouveau WP_Query car selon la documentation, 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; ?>

Toutefois, ce encore semble être classé par catégorie (dans le même ordre que la liste ci-dessus), puis par date, et non par date.

Était-ce utile?

La solution

J'ai déjà eu des problèmes avec cela auparavant.

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 'global $ post;'.

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

Autres conseils

Je n'ai aucune expérience de Wordpress, mais quelques possibilités:

  1. Vous définissez la " commande " paramètre deux fois dans la chaîne avec laquelle vous appelez query_posts () , je ne sais pas si cela pose un problème ou non.
  2. De même, " montrer " n’est pas un paramètre valide, vous avez peut-être cherché des "expositions".

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

query_posts est parfois difficile. Essayez quelque chose comme ça et voyez si cela fonctionne:

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

Puisque ce n'est pas le problème, essayez d'ajouter update_post_caches ($ posts) à 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, résout certains problèmes de plug-in .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top