it-swarm-eu.dev

Vyloučení Sticky Posts z The Loop az WP_Query () v WordPressu?

Následující úryvek je z widgetu sidebar, který obsahuje seznam posledních příspěvků. Vzhledem k tomu, že je to na domovské stránce a na této stránce vidím svůj poslední lepkavý příspěvek, chci přeskočit lepkavé v této smyčce. post_not_in=sticky_posts však nemá žádný vliv.

<?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; ?>
1
Scott B

Vzal jsem odpověď @ tnorthcutt od WordPress 'Codex na query_posts() o Sticky Parameters a vytvořili tandemový příklad, který můžete umístit jako test.php do kořenového adresáře svých webových stránek a zobrazit jej tak, že přejdete na podobnou adresu URL, přičemž doména bude nahrazena:

http://example.com/test.php

Některé poznámky k kódu; Musel jsem použít ekvivalent pole dotazového řetězce , který jste předali WP_Query(), protože argument post__no_in nelze předat jako řetězec oddělený čárkou (není si jistý proč, pravděpodobně dohled ?).

Také jsem se chtěl ujistit, že víte, že počínaje offset=1 (místo offset=0) znamená, že vyloučíte první příspěvek, který by jinak dotaz vrátil. Samozřejmě budete mít stále počet příspěvků uvedených v $number za předpokladu, že máte mnoho platných příspěvků +1. Tak tady je kód:

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

Pokud chcete z dotazu vyloučit všechny příspěvky, použijte

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

(od kodexu )

Vypadá to, že bude fungovat pouze na verzi 3.0 nebo vyšší: http://wordpress.org/support/topic/excluding-sticky-posts-using-query_posts

Upravit: v reakci na níže uvedený komentář zkuste to (nejsem si jistý, zda to bude fungovat, ale doufejme, že to bude možné):

<?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; ?>
1
Travis Northcutt