it-swarm.cn

从循环和WordPress中的WP_Query()中删除粘贴的帖子?

以下代码段来自侧栏小部件,其中列出了“最近的帖子”。由于它在主页上,并且我在该页面上突出显示了我最新的粘性帖子,我想跳过这个循环中的粘性。但是,post_not_in=sticky_posts无效。

<?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

我从 WordPress'Codex on query_posts()上关于粘性参数 取了@tnorthcutt的答案并创建了一个tandalone示例您可以将test.php作为post__no_in放入您网站的根目录,并通过导航到这样的URL来运行,并替换您的域名:

http://example.com/test.php

关于代码的一些注释;我不得不使用与传递给WP_Query()的查询字符串相当的数组,因为offset=1参数不能作为逗号分隔的字符串传递(不确定原因,可能是疏忽) ?)。

此外,我想确保您知道以offset=0(而不是$number)开头意味着您将排除查询返回的第一个帖子。当然,假设您有许多适用的帖子+1,您仍然可以获得<?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

如果要从查询中排除所有粘性帖子,请使用

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

(来自 the codex

看起来只能在3.0或更高版本上工作,但是: http://wordpress.org/support/topic/excluding-sticky-posts-using-query_posts

编辑:在回复下面的评论时,试试这个(我不确定这会有效,但希望它会让你开始):

<?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