在每3个帖子之后回显一个短码div

时间:2015-07-07 作者:AndrewL64

在我的wordpress主页中。php文件中,我在几个stackexchange线程的帮助下放置了一个增量循环:

<?php if (have_posts()) : ?>
    <?php $count = 0; ?>
    <?php while (have_posts()) : the_post(); ?>
        <?php $count++; ?>
    <?php if ($count == 3) : ?>
        <?php if (function_exists (\'adinserter\')) echo adinserter (1); ?>
        <?php get_template_part( \'content\', get_post_format() ); ?>
        <?php $count = 0; ?>    
    <?php else : ?>
        <?php get_template_part( \'content\', get_post_format() ); ?>
    <?php endif; ?>
 <?php endwhile; ?>
<?php endif; ?>
其中,内容内部。php文件,我有以下内容:

<div class="row">
    <div class="col-md-3">
            <?php
            if ( has_post_thumbnail()) {
                echo \'<a href="\' . get_permalink($post->ID) . \'" >\';
                the_post_thumbnail(\'my_feature_image\', array( \'class\' => "img-responsive" ));
                echo \'</a>\';
            }
            ?>
    </div>
    <div class="col-md-9">
            <h3 class="article-list-header"><strong><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></strong></h3>
            <h4 class="article-list-subheader"><?php the_time(\'l, F jS, Y\'); ?></h4>
            <p><?php the_content(); ?></p>
    </div>
</div>
正如您在上文中所看到的,我尝试将此放置:<?php if (function_exists (\'adinserter\')) echo adinserter (1); ?> 在每三篇帖子之后,无论我给计数增加了多少价值,这似乎都不起作用。它在任意位置响应php函数,在我的无限滚动主页的下一页上似乎也不起作用。

我能得到一些关于我做错了什么的指示吗。

1 个回复
SO网友:s_ha_dum

首先,让我们清理这个标签垃圾邮件噩梦,以便我们可以阅读它,然后简化代码:

function adinserter() {
  return \'abcdefg\';
}

if (have_posts()) { 
  $count = 0; 
  while (have_posts()) { 
    the_post(); 
    $count++; 
    get_template_part( \'content\', get_post_format() ); 
    if ($count == 3) { 
      if (function_exists (\'adinserter\')) {
        echo adinserter (1); 
      }
      $count = 0; 
    }
  } 
}
你在复制代码get_template_part() 内部和else 有条件的,也在if 它本身这段代码一直在运行。它根本不需要处于条件中。

接下来,除了echo函数的放置之外,您的代码也可以工作。把它放在get_template_part() 在帖子#2和#3之间进行了第一次加法——这就是我假设你所说的代码“在随机位置”插入的意思。其余的都正确地插入了。你的方式if/else 写这篇文章可能很难发现,但当我把它清理干净后,答案就相当明显了。

到目前为止,没有太多的文字。WordPress是这样的:你不需要计数器。有一个内置在Loop. 它是为您提供的。

if (have_posts()) { 
  while (have_posts()) { 
    the_post(); 
    get_template_part( \'content\', get_post_format() ); 
    if ($wp_query->current_post !== 0 && ($wp_query->current_post+1)%3 == 0) { 
      if (function_exists (\'adinserter\')) {
        echo adinserter (1); 
      }
    }
  } 
}
至于为什么它不适用于你的无限卷轴,我不能说,因为我不知道你的无限卷轴是如何工作的。

结束