Frage

Das folgende Snippet stammt aus einem Seitenleisten -Widget, das "aktuelle Beiträge" auflistet. Da es auf der Homepage ist und ich meinen neuesten klebrigen Beitrag auf dieser Seite präsentieren möchte, möchte ich die Klebrigkeit in dieser Schleife überspringen. Allerdings die post_not_in=sticky_posts hat keine Wirkung.

<?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; ?>
War es hilfreich?

Lösung

ich nahm @tnorthcutt's Antwort von WordPress 'Codex auf query_posts() über klebrige Parameter und erstellte ein Tandalone -Beispiel, das Sie fallen können als test.php In die Wurzel Ihrer Website und sehen Sie es durch die Navigation zu einer URL wie diese, wobei Ihr Domain ersetzt wird:

http://example.com/test.php

Einige Notizen zum Code; Ich musste benutzen ein Array -Äquivalent der Abfragezeichenfolge Sie sind an WP_Query() weil die post__no_in Das Argument kann nicht als Komma -Abgrenzungszeichenfolge verabschiedet werden (nicht sicher warum, wahrscheinlich als Versehen?).

Außerdem wollte ich sicherstellen, dass Sie das wissen, beginnend mit einem offset=1 (Anstatt von offset=0) bedeutet, dass Sie den ersten Beitrag ausschließen, der sonst von der Abfrage zurückgegeben würde. Natürlich erhalten Sie immer noch die Anzahl der angegebenen Beiträge, die von angegeben werden $number Angenommen, Sie haben so viele anwendbare Beiträge +1. Also hier ist der 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;

Andere Tipps

Wenn Sie alle klebrigen Beiträge von einer Abfrage ausschließen möchten, verwenden Sie

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

(aus der Codex)

Sieht so aus, als würde das jedoch nur an 3.0 oder mehr funktionieren: http://wordpress.org/support/topic/excluding-sticky-post-using-query_posts

Bearbeiten: Versuchen Sie dies als Antwort auf Ihren Kommentar unten (ich bin mir nicht sicher, ob dies funktionieren wird, aber hoffentlich wird es Ihnen den Einstieg bringen):

<?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; ?>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top