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