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

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

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

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

【问题讨论】:

    标签: php wordpress loops


    【解决方案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++;
      }
      

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

      【讨论】:

        猜你喜欢
        • 2015-06-10
        • 2017-04-30
        • 1970-01-01
        • 2016-06-24
        • 1970-01-01
        • 2010-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多