在某些产品之间添加独特的营销信息,同时使用同位素/无限卷轴

时间:2015-02-10 作者:Dan Whiteside

我目前正在使用WooCommerce显示产品列表,使用以下循环可以显示帖子类型“product”,并允许分页,因此我可以使用无限滚动来平滑浏览所有可用的产品。

我的问题是,我想在循环中的某些产品之间注入定制营销信息。

我尝试了以下方法:http://dancameron.org/code/adding-content-between-posts-wordpress-loop/ 这是可行的,但当我只想显示一次时,它会在每x条帖子中重复相同的唯一消息。

我还构思了使用jQuery插入这些消息的想法,并给出了以下示例:

$(\'.item:nth-child(2)\').before("<div class=\'item main\'><img src=\'<?php echo get_template_directory_uri(); ?>/img/dressup-slider.jpg\' /></div>");
但是,如果我将第n个子项设置为更高的数字,则显示的产品数量并滚动到它所在的页面,则不会显示任何内容。

任何建议或正确的方向都将不胜感激

我使用的循环:

<?php 
$paged = 1;
if ( get_query_var(\'paged\') ) $paged = get_query_var(\'paged\');
if ( get_query_var(\'page\') ) $paged = get_query_var(\'page\');
$i = 0;
$loop = new WP_Query( array( \'post_type\' => \'product\', \'paged\' => $paged, \'posts_per_page\' => 15 ) );
while ( $loop->have_posts() ) : $loop->the_post()  ?>

<!-- product template -->

<?php $i++; endwhile;  ?>

<?php 

if ( function_exists( \'wp_pagenavi\' ) ) { ?>
<nav id="page-nav">
    <?php wp_pagenavi( array( \'query\' => $loop ) ); ?>
</nav>  
<?php wp_reset_postdata();
}
?>
同位素/无限滚动调用

var $container = $(\'.isotope\');
var $finishedMsg = \'No more posts to load.\';
var $msgText = \'Loading more posts...\';
var $loadingImg = \'images/spinner.gif\';

        $container.imagesLoaded(function(){ 
            $container.isotope({
                itemSelector: \'.item\',
                //transformsEnabled: false,
                //animationEngine: \'css\',
                masonry: {
                    columnWidth: \'.grid-sizer\',
                    gutter: 10
                }
            }); 
        });

        $container.infinitescroll({
              navSelector  : \'#page-nav\',    
              nextSelector : \'#page-nav a\', 
              itemSelector : \'.item\',
              loading: { finishedMsg: $finishedMsg, img: $loadingImg }
          },
          function(newElements) {
            var $newElems = $(newElements).css({opacity: 0});

            $newElems.imagesLoaded(function(){

              $newElems.animate({opacity: 1});
              $container.isotope(\'appended\', $newElems, true);                  

            WireEvents();

            });
          }
        );      

1 个回复
最合适的回答,由SO网友:Chief Alchemist 整理而成

两个想法:

1) 同位素难道没有添加“物质”的方法吗?

2) 在产品中添加一两个自定义字段,然后使用这些字段在该产品之前/之后创建一个元素,怎么样?

3) 不要通过循环注入消息,只需创建div/wrapped-some-id或class,然后使用jQuery将其填充为随机的内容。

结束