Wordpress: supprimer les postes en double dans plusieurs boucles

Jeudi, Juillet 2, 2009

Le query_posts() fonction utile query_posts() ou WP_Query objet (qui sont ensuite fondamentalement la même chose) Wordpress vous permet d'obtenir une liste des postes mis beaucoup de paramètres de recherche (voir Très court extrait: afficher une liste des postes par catégorie ou par tag ). Précisément en raison de sa polyvalence dans la recherche de poste ne peut arriver que la fonction en utilisant deux ou plusieurs fois de suite vous avez le "duplicate". Cela peut arriver, par exemple, lorsque vous recherchez (filtres) pour les tags, un poste, en fait, peut (a bel et bien, dans la plupart des cas) sont associés à des tags. Il s'ensuit que la liste des postes avec TAG A mai aussi pour envoyer un message dans la liste des postes à TAG B

Pour éliminer le problème mai procéder de deux manières différentes, selon la version de WordPress. La première est de mettre de côté tous les identifiants de la première boucle de façon à les exclure dans la seconde. Cette technique peut être utilisée pour n'importe quel nombre de boucles et à l'avantage d'être compatible avec les anciennes versions de WordPress:

PHP:
  1. / / Première boucle
  2. / / Le tableau $ ids [] ci-dessous est utilisée pour garder une trace de
  3. / / Id du poste que je suis sorti avec la première boucle
  4. array ( ) ; $ Ids = array ();
  5. ) ; query_posts ( 'category = Flash & showposts = 10');
  6. have_posts ( ) ) : the_post ( ) ; while (have_posts ()): the_post ();
  7. = $post -> ID ; $ Ids [] = $ post -> ID;
  8. / / ... sortie
  9. endif;
  10. / / Seconde boucle
  11. / / Dans ce cas, la sortie n'est que chose
  12. / / $ Post-> ID n'est pas présent dans le répertoire $ ids []
  13. ) ; query_posts ( 'category = Adobe & showposts = 10');
  14. have_posts ( ) ) : the_post ( ) ; while (have_posts ()): the_post ();
  15. ! in_array ( $post -> ID , $ids ) ) { si (in_array ($ post -> ID, $ ids)) (
  16. / / ... sortie
  17. )
  18. endif;

Si la libération de WordPress que nous utilisons est de 2,6 ou plus, nous pouvons appliquer une comodoa variante de la seconde boucle:

PHP:
  1. / / Seconde boucle
  2. / / WordPress 2.6 +
  3. / / Dans ce cas query_posts directement () pour
  4. / / Exclure les IDs des postes déjà affiché
  5. query_posts (
  6. 'showposts' => 10 , showposts array ( '' => 10,
  7. 4 , 'cat' => 4,
  8. $ids , 'post__not_in' => $ ids,
  9. ));
  10. have_posts ( ) ) : the_post ( ) ; while (have_posts ()): the_post ();
  11. / / ... sortie
  12. endif;

post__not_in Option avec les autres est bien documenté ici.

Related Post

Cet article était utile?: Per nientePocoAbbastanzaMoltoMoltissimo
Loading ... Chargement ...

3 commentaires à "Wordpress: supprimer des postes en double dans plusieurs boucles"

  1. getAvatar 1.0
    02 juil. 2009 Undolog.com »Wordpress: supprimer des postes en double dans les boucles multiples:

    [...] De l'article original: Undolog.com »Wordpress: supprimer des postes en double dans plusieurs boucles d'articles connexes: Undolog.com" Très court extrait: Wordpress, bientôt sur le [...]

  2. getAvatar 1.0
    04 lug 2009 Wordpress: supprimer des postes en double sur des boucles multiples:

    [...] Source: Wordpress: supprimer des postes en double dans plusieurs boucles d'articles connexes: Undolog.com »Wordpress: supprimer des postes en double dans la boucle [...]

  3. getAvatar 1.0
    04 lug 2009 Choix de la semaine # 24 | BigThink:

    [...] Wordpress: supprimer les postes en double dans plusieurs boucles Un petit truc pour éviter la répétition du message lorsque nous avons deux boucles sur la même page. [...]

Laissez un commentaire

TAG PERMISSIONS XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERTION CODE:
 <pre></pre>         // blocco generico [code][/code]       // blocco generico [as][/as]           // Actionscript [css][/css]         // CSS Style Sheet [html][/html]       // HTML [js][/js]           // Javascript [objc][/objc]       // Objective-C [php][/php]         // PHP [sql][/sql]         // SQL