两个循环,一个AJAX循环,将第一个循环中的帖子从第二个循环中排除,循环位于不同的文件中

时间:2020-04-22 作者:ralphjsmit

我有两个显示帖子的循环:“default”循环(在home.php中),它显示five 职位。在页面底部有一个按钮,它调用AJAX调用,调用第二个循环并返回six 新职位。现在我需要第二个循环从第六个帖子开始,就好像这是第一个帖子一样。第二个循环中的每个页面显示六篇文章。

底部代码的问题是,我的AJAX调用从“第二”页获得了六篇文章。但由于只显示了五个帖子,它跳过了帖子。如果我可以更改第二个循环,那么问题也会得到解决,第一个“页面”有五篇文章,其他页面有六篇。

第二个循环代码放在函数中。php和名为loop的模板文件中的第一个。php(使用get\\u template\\u part()将其调用为home。php)。为了清晰起见,我在下面给出了两个循环的代码。

<?php
$args = array(
    \'post_type\' => \'post\',
    \'post_status\' => \'publish\',
    \'posts_per_page\' => \'5\',
    \'paged\' => 1,
);
$blog_posts = new WP_Query( $args );
?>

<?php if ( $blog_posts->have_posts() ) : ?>
        <?php while ( $blog_posts->have_posts() ) : $blog_posts->the_post(); ?>

        <div class="ambition-home-post-single override">
            <div class="ambition-home-post-contents override">      
                <img class="ambition-home-thumbnail-container override" src="<?php echo the_post_thumbnail_url(); ?>">
                <h2><a href=\'<?php the_permalink() ?>\'><?php the_title() ?></a></h2>
                <div class="ambition-home-post content override"><?php the_excerpt() ?></div>
            </div>
        </div>


        <?php endwhile; ?>
<?php endif; ?>
    add_action(\'wp_ajax_load_posts_by_ajax\', \'load_posts_by_ajax_callback\');
    add_action(\'wp_ajax_nopriv_load_posts_by_ajax\', \'load_posts_by_ajax_callback\');


    function load_posts_by_ajax_callback() {
        check_ajax_referer(\'load_more_posts\', \'security\');
        $paged = $_POST[\'page\'];
        $args = array(
            \'post_type\' => \'post\',
            \'post_status\' => \'publish\',
            \'posts_per_page\' => \'6\',
            \'paged\' => $paged,
        );
        $blog_posts = new WP_Query( $args );
        ?>

        <?php if ( $blog_posts->have_posts() ) : ?>
                <?php while ( $blog_posts->have_posts() ) : $blog_posts->the_post();?>

                <div class="ambition-home-post-single override">
                    <div class="ambition-home-post-contents override">      
                        <img class="ambition-home-thumbnail-container override" src="<?php echo the_post_thumbnail_url(); ?>">
                        <h2><a href=\'<?php the_permalink() ?>\'><?php the_title() ?></a></h2>
                        <div class="ambition-home-post content override"><?php the_excerpt() ?></div>
                    </div>
                </div>


                <?php endwhile; ?>
        <?php endif;

        wp_die();
    }

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

我通过应用偏移量解决了这个问题,正如在这个问题中提出的那样:How to exclude latest x posts from a paginated query?.

相关推荐

WordPress AJAX表单出现问题

我正在尝试使用ajax将表单中的数据保存到用户元,但没有成功。我对jQuery还很陌生,不确定我会错在哪里,因为似乎没有任何suntax错误。以下是我的插件文件中的代码:/** * Action hooks */ // Register and Enqueue plugin styles and scripts add_action( \'wp_enqueue_scripts\',\'load_css_and_js\');