Question

L'extrait suivant est d'un widget barre latérale qui répertorie les « messages récents ». Depuis son sur la page d'accueil et je placer mon lastest après collant en bonne place sur cette page, je veux sauter le collant dans cette boucle. Cependant, le post_not_in=sticky_posts n'a pas d'effet.

<?php
    $the_query = new WP_Query("showposts=$number&offset=1&order=ASC&post_not_in=sticky_posts");

    while ($the_query->have_posts()) : $the_query->the_post();
        $do_not_duplicate = $post->ID; ?>
Était-ce utile?

La solution

Je pris @ de tnorthcutt La réponse de Codex sur WordPress query_posts() sur les paramètres Post-it et a créé un exemple de tandalone vous pouvez déposer comme test.php dans votre racine de site Web et voir courir en naviguant vers une URL comme celui-ci, avec votre domaine substitué:

  

http://example.com/test.php

Quelques notes sur le code; Je devais utiliser un équivalent tableau de la chaîne de requête est passé à WP_Query() parce que l'argument post__no_in ne peut pas être transmis comme une chaîne délimitée par des virgules (ne sais pas pourquoi, sans doute un oubli?).

Aussi je voulais vous assurer que vous savez que commencer par un offset=1 (au lieu de offset=0) signifie que vous serez excluez le premier poste qui, autrement, serait renvoyé par la requête. Bien sûr, vous aurez toujours le nombre de postes spécifiés par $number supposant que vous avez que de nombreux postes applicables +1. Alors, voici le code:

<?php
header('Content-Type:text/plain');
include "wp-load.php";

$number = 5;

$the_query = new WP_Query(array(
  'showposts' => $number,
  'offset' => 1,  // This will cause the query to skip over first post
  'order' => 'ASC',
  'post__not_in' => get_option("sticky_posts"),
  ));
while ($the_query->have_posts()) : $the_query->the_post();
  the_title(); 
endwhile;

Autres conseils

Si vous voulez exclure tous les messages collants à partir d'une requête, utilisez

query_posts(array("post__not_in" =>get_option("sticky_posts")));

(de codex )

On dirait que ne fonctionne que sur 3,0 ou plus, bien que: http : //wordpress.org/support/topic/excluding-sticky-posts-using-query_posts

Edit: en réponse à votre commentaire ci-dessous, essayez ceci (je ne suis pas sûr que cela fonctionnera, mais nous espérons qu'il va vous aider à démarrer):

<?php 
$args=array(
    'showposts'=>'$number',
    'offset'=>'1',
    'order'=>'ASC',
    'post__not_in'=>get_option("sticky_posts")
    );
$the_query = new WP_Query($args);

    while ($the_query->have_posts()) : $the_query->the_post();

        $do_not_duplicate = $post->ID; ?>
Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top