这种情况就像array( 1,2,3,4,2,5 )
如下所示:
Array(
0 => 1
,1 => 2
,2 => 3
,3 => 4
,4 => 2
,5 => 5
) [length = 6 ]
看起来还可以。但是当你看到
WP_Query
对象,您将看到以下部分添加到查询字符串中:
" AND {$wpdb->posts}.ID IN ($post__in)"
这意味着每个帖子都将被提取一次。
结论
因此,除非您多次修改查询以包含帖子,否则您将只能在运行时执行此操作。
运行时配置可能性和内部x光透视每个基本循环如下所示:
if ( have_posts() )
{
while( have_posts )
{
the_post();
// do stuff
}
}
现在
global $post
指通过什么获取设置
the_post()
. 它基本上是
$GLOBALS[\'wp_query\']->the_post();
. 当你看到
WP_Query::the_post()
方法,您会发现非常有趣的事情:
function the_post() {
global $post;
$this->in_the_loop = true;
if ( $this->current_post == -1 ) // loop has just started
do_action_ref_array(\'loop_start\', array(&$this));
$post = $this->next_post();
setup_postdata($post);
}
你看到了
$this->next_post();
呼叫。从内部看,这一个如下所示:
function next_post() {
$this->current_post++;
$this->post = $this->posts[$this->current_post];
return $this->post;
}
因此,您可以看到循环所依赖的主要内容是
current_post
柜台也可以从前端/a模板访问此模板。简单使用
$GLOBALS[\'wp_query\']->current_post
在帖子之间“跳转”。所以,如果你需要在帖子X之后重复一篇帖子,那么只需对照它进行检查,切换一轮,然后跳回。