【问题标题】:How to add looping advertisement and different post stlyes inside WP loop?如何在 WP 循环中添加循环广告和不同的帖子样式?
【发布时间】:2014-04-01 19:36:54
【问题描述】:

所以我有这个循环,它只查询特定类别的帖子并以相同的样式显示它们。我想要的是每 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(); ?>

【问题讨论】:

  • 您是否添加了其他帖子类型?
  • 这还没有解决吗?
  • 是的。还是有问题。出于某种原因,这不起作用,但也不会给出任何错误。
  • @Chris 你有现场的测试站点吗?例如,您应该回显 $k$i 以查看数字。

标签: php wordpress loops


【解决方案1】:

这里有一个想法:

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

<?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 挂钩来修改主查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多