Wordpress 循环:获取循环内的当前帖子计数

Posted

技术标签:

【中文标题】Wordpress 循环:获取循环内的当前帖子计数【英文标题】:Wordpress loop : get current post count inside The Loop 【发布时间】:2011-03-19 11:59:38 【问题描述】:

在循环中,我想检索当前的帖子数。

例如,在每 3 个帖子之后,我想插入一个广告。

那么,如何获取循环计数的值?

【问题讨论】:

【参考方案1】:

您可以使用WP_Query对象实例的current_post成员来获取当前的后迭代;

while ( have_posts() ) : the_post();

    // your normal post code

    if ( ( $wp_query->current_post + 1 ) % 3 === 0 ) 

        // your ad code here

    

endwhile;

注意,如果您在函数中使用它,则需要将 $wp_query 全球化。

【讨论】:

我试过这个方法。每 3 个帖子前后都会插入广告!我如何让它仅在 3 个帖子后插入广告。 @KartikRao 供将来参考,这个答案有那么一点缺陷。由于索引从 0 开始,第一次运行条件(while 循环的第一次迭代)时,它实际上将返回 true,因为 0 模数任何实数始终为 0。广告代码在您的第一个之前被错误地插入发布、第四篇、第七篇等。更新后的代码应为:($wp_query->current_post + 1) % 3 @AdamMcArthur 在第四和第七个帖子之前插入广告代码是正确的,因为问题描述说应该在“每 3 个帖子之后”插入广告。您是对的,在第一个帖子之前插入广告不符合规范,但您建议的修复 - 将在第 2/5/8 个帖子之后插入广告,而不是按要求在第 3/6/9 个帖子之后插入广告 - 不要么。【参考方案2】:

为什么不增加一个变量然后在需要时显示您的广告?

while(LOOP)
    echo $i%3==0 ? $ad : '';
    $i++

【讨论】:

【参考方案3】:

不知道为什么,但是建议的方法对我不起作用,我不得不求助于以下方法

$loop_counter = 1;
while( $query->have_posts() )

    //Do your thing $query->the_post(); etc

    $loop_counter++;

如果你问我,比玩全局变量更安全。

【讨论】:

以上是关于Wordpress 循环:获取循环内的当前帖子计数的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress如何获取图形标签内的帖子缩略图

Wordpress:使用过滤器删除“循环”中的帖子

在Wordpress循环中获取迭代计数

php 无论如何,获取WordPress帖子图片。必须在循环中使用。

在wordpress中获取帖子的作者ID

重复循环内的行