如何在WP循环中添加循环广告和不同的帖子?

时间:2014-04-01 19:36:55

标签: php wordpress loops

所以我有这个循环只查询来自特定类别的帖子并以相同的样式显示它们。我想要的是每5个帖子显示不同风格的帖子+ 1个adsense广告,而其他帖子保持相同的风格。例如:1张大图片帖子+ 1个广告+ 3个小帖子。我正在使用无限滚动插件,所以用这种方式很酷。我仍然是.php和WP的新手,所以除了一些自定义的html和css内部循环之外,我没有尝试过多,这显然不起作用。

 <?php query_posts("cat=8&paged=$paged&posts_per_page=7"); ?>
 <?php while ( have_posts() ): the_post(); ?>
 <article id="entry-<?php the_ID(); ?>" <?php post_class('entry group'); ?>>
  <div id="postcontent"></div>
 </article>
 <?php endwhile; ?>
 <?php wp_reset_query(); ?>

1 个答案:

答案 0 :(得分:0)

以下是一个想法:

添加自定义函数或在循环中引入自己的钩子:

<?php while ( have_posts() ): the_post(); ?>

    <article id="entry-<?php the_ID(); ?>" <?php post_class('entry group'); ?>>
         <div id="postcontent"></div>
    </article>

    <?php do_action( 'inject_ads', $wp_query->current_post ); ?> 

<?php endwhile; ?>
<?php wp_reset_query(); ?>

您可以像这样注入广告:

add_action( 'inject_ads', function( $i ){

    if( 4 === $i % 5 )
    {
         echo '... your ad code ...';
    }

});

这是一个表格,显示了这可能如何运作:

i i%5
0  0
1  1
2  2
3  3
4  4  <-- inject ad
5  0
6  1
7  2

如果是无限卷轴,您可以尝试替换

    <?php do_action( 'inject_ads', $wp_query->current_post ); ?> 

    <?php do_action( 'inject_ads', $k ); ?> 

,其中

$k = ( $paged > 1 ) ? $wp_query->post_count * ( $paged - 1 ) + $wp_query->current_post : $wp_query->current_post;

保持注射期。

希望这有帮助。

Ps:您正在使用query_posts,但使用pre_get_posts挂钩修改主要查询更为常见。