Duplicate posts

时间:2012-08-04 作者:Martin Hasan

我目前正在一个杂志风格的网站上工作,在主页上,我有三个不同的部分来显示最新的新闻。滑块、最新新闻和更多新闻。

问题是我不知道如何避免每个帖子上出现重复帖子。

以下是查询示例:

// build query
query_posts( $this->getQueryParams($type, $esc_category, $this->escapeText($data[\'number_of_posts\'])) );
// loop
while (have_posts()) : the_post();
每个部分被称为“模块”,因此相同的代码适用于其余的查询。

谢谢

2 个回复
SO网友:Brian Fegter

可以使用静态类属性存储以前查询中使用的帖子滚动列表。此方法允许您在类(小部件、模块、插件等)之间传递数据,但也适用于程序工作流。页面上使用中间类的所有内容都将知道要排除哪些帖子。

Step 1: Create a class that has a static $posts property

您将需要getter和setter方法。

class RollingPostsIndex{
    public static $posts = array();

    public function set($new_posts){
        $previous_posts = self::get();
        $posts = array_push($previous_posts, $new_posts);
        return self::$posts = $posts;
    }

    public function get(){
        return self::$posts;
    }
}

Step 2: Create two helper functions to for setting and getting.

function add_rolling_posts($post_ids);
    RollingPostsIndex::set($post_ids);
}

function get_rolling_posts(){
    return RollingPostsIndex::get();
}

Step 3: Track your post ids within your WP_Query instance loops

$post_ids[] = $post->ID;

Step 4: Add the new section post IDs array to the RollingPostsIndex static property

使用我们之前创建的API函数。

add_rolling_posts($post_ids);

Step 4: Add an argument to your WP_Query instance to exclude previously used post ids.

$args[\'__post_not_in\'] = get_rolling_posts();
我已经对这个方法进行了广泛的测试,它可以很好地在整个页面加载过程中跟踪帖子ID。

希望这对你有帮助!

SO网友:Milo

首先,您应该使用WP_Query 而不是query_posts 对于这些查询。query_posts 用于更改主查询,但即使在这种情况下better methods.

提到WP_Query Post and Page parameters 要查看如何从查询中排除帖子,请执行以下操作:

$id_to_exclude = 42;

$args = array(
    \'post__not_in\' => array( $id_to_exclude )
);
$results = new WP_Query( $args );

结束

相关推荐

MetaWeblog.getRecentPosts在我的iPhone应用程序中没有返回任何内容

metaWeblog.getRecentPosts 在我的iphone应用程序中没有返回任何内容,Followong是我调用该方法的目标c代码,xml rpc wordpress方法如下wp.getUsers 工作正常,但使用的方法检索命令、帖子(wp.getComments ,metaWeblog.getRecentPosts ) 正在返回nullNSArray *arrParameters = [NSArray arrayWithObjects:@\"1\", @\"username\", @\"p