AJAX加载更多插件加载已经显示的帖子

时间:2017-04-02 17:22:52

标签: php ajax wordpress

我正在使用包含多个部分的网页的网站,每个部分都有多个包含多个类别的循环。我使用Ajax Load More插件为每个部分加载新帖子。问题是,当我点击“加载更多”时,它会加载已显示的帖子和未显示的帖子。我希望它只加载尚未显示的新帖子。

这是我使用的短代码:

echo do_shortcode('[ajax_load_more container_type="div" post_type="post" posts_per_page="3" preloaded="true" preloaded_amount="4" pause="true" scroll="false" button_loading_label="Loading..." seo="true" category="church-music-news"]');

这是

部分的循环
<div class="row">

                <div class="col-lg-12 col-sm-12">
                    <div class="music_box bg-color1">
                        <div class="music_box_top">

                            <?php
                            $sticky = get_option( 'sticky_posts' );
                            rsort( $sticky );

                            $args = array(
                                'post__in' => $sticky,
                                'posts_per_page' => 1,
                                'cat' => 34
                                );

                            $sticky_query = new WP_Query( $args );

                            while ( $sticky_query->have_posts() ) : $sticky_query->the_post(); 
                            ?>
                            <a href="<?php the_permalink(); ?>">
                                <div class="fashion_box_thumb">
                                    <?php
                                    if ( has_post_thumbnail() ) {
                                        the_post_thumbnail( 'full', array() );
                                    }
                                    ?>
                                </div>
                            </a>

                            <div class="fashion_box_text">
                                <a href="<?php the_permalink(); ?>">
                                    <h3><?php the_title(); ?></h3>
                                </a>
                                <p><?php the_excerpt(); ?></p>

                                <div class="post_cont_icons">
                                    <span class="fa fa-comments cmnt"> <?php comments_number('0','1','%'); ?></span>
                                    &nbsp; &nbsp;           
                                    <?php echo getPostLikeLink(get_the_ID());?>

                                    <span class="matchtime2"><i class="fa fa-clock-o"></i> <?php the_time();?><br></span>
                                </div>

                            </div>


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

                            <div class="clear"></div>

                        </div><!--music_box_top-->

                        <div class="fashion_box_bottom">

                            <?php
                            $args = array(
                                'post__not_in' => get_option( 'sticky_posts' ),
                                'posts_per_page' => 4,
                                'cat' => 34
                                );

                            $sticky_query = new WP_Query( $args );

                            $count = 0;

                            while ( $sticky_query->have_posts() ) : $sticky_query->the_post(); ?>
                                <?php $count++; ?>
                                <?php if ($count == 1) : 
                            ?>

                            <div class="fashion_box_bottom_item">
                                <a href="<?php the_permalink(); ?>">
                                    <h4><?php the_title(); ?></h4>
                                </a>
                            </div>

                            <?php elseif ($count == 2) : ?>
                            <div class="fashion_box_bottom_item">
                                <a href="<?php the_permalink(); ?>">
                                    <h4><?php the_title(); ?></h4>
                                </a>
                            </div>

                            <?php elseif ($count == 3) : ?>
                            <div class="fashion_box_bottom_item">
                                <a href="<?php the_permalink(); ?>">
                                    <h4><?php the_title(); ?></h4>
                                </a>
                            </div>

                            <?php elseif ($count == 4) : ?>
                            <div class="fashion_box_bottom_item">
                                <a href="<?php the_permalink(); ?>">
                                    <h4><?php the_title(); ?></h4>
                                </a>
                            </div>                        

                            <div class="clear"></div>

                        </div><!--music_box_bottom-->
                    </div><!--music_box-->
                </div><!--col-lg-12-->

                <?php else :
                get_template_part( 'woodclefpro/pro_template3' );

                endif;
                endwhile;
                wp_reset_postdata(); ?>

            </div><!--row-->
            <div class="row">
            <?php 

                echo do_shortcode('[ajax_load_more container_type="div" post_type="post" posts_per_page="3" preloaded="true" preloaded_amount="4" pause="true" scroll="false" button_loading_label="Loading..." seo="true" category="church-music-news"]');
            ?>
            </div>

2 个答案:

答案 0 :(得分:0)

这适用于那些可能遇到上述问题且面临同样问题的人。以下是我解决它的方法。

endwhile

之前添加以下代码
$do_not_duplicate[] = $post->ID;

在短代码中添加:post__not_in="'.$post__not_in.'"

然后你的最终短代码如下:

echo do_shortcode('[ajax_load_more ajax_load_more post__not_in="'.$post__not_in.'" container_type="div" post_type="post" posts_per_page="3" preloaded="true" preloaded_amount="4" pause="true" scroll="false" button_loading_label="Loading..." seo="true" category="church-music-news"]');

答案 1 :(得分:0)

不太正确。事实是,在该插件的附加组件之一的页面上,模板输出的单个条目(例如“ single.php”)应该只是短代码。所有内容single.php应该放置在插件使用的模板中。对不起,英语歪了。 https://connekthq.com/plugins/ajax-load-more/add-ons/single-posts/

  

注意:Ajax Load More将负责加载所有帖子,包括   用户登陆页面时的初始帖子。所有应该保留的   在single.php循环中,是ajax_load_more短代码(如所见)   以上)。