如何从分页查询中排除最新的x个帖子?

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

我有一个WordPress循环,这是AJAX调用的一部分。每次单击按钮时,都会调用此函数,运行下面的循环并输出接下来的6篇文章。默认情况下,已经显示了五个帖子。如何从Wordpress循环中排除五篇最新(最近发布的)帖子?循环的第1页从第6、7、8、9、10和;第11个职位?

这是我使用的循环。如果有人能告诉我如何修改它,让它从第6篇文章开始,那就太好了。提前感谢!

$args = array(
    \'post_type\' => \'post\',
    \'post_status\' => \'publish\',
    \'posts_per_page\' => \'4\',
    \'paged\' => $paged, //Starts with 1 (or a different number if that\'s better)
);
$query = new WP_Query( $args );
?>

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

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


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

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

一种方法是使用offset 中的参数WP_Query, 但它覆盖了paged 参数根据docs.

Example formula for an offset with pagination:

\'posts_per_page\' => $posts_per_page,
\'offset\'         => ( $paged - 1 ) * $posts_per_page + $offset_per_page,

Example:

然后用于$posts_per_page as 4和$offset_per_page 作为5,我们得到了邮政编码:

first page:   6,7,8,9    (skip first 5 posts)
second page: 10,11,12,13 (skip first 9 posts)
third page:  14,15,16,17 (skip first 13 posts)
...

Notes:

在里面this previous answer 我添加了一种使用另一种公式的方法。

可能有一些performance issues 对于非常大的偏移量。

请注意,WordPress也有自己的RESTAPI,在许多情况下可以用来代替Ajax。

我还想知道这里是否真的需要偏移量,是否可以用一个REST API设置代替原来的循环+Ajax。

ps:以上未经测试。

相关推荐

WP Cron jobs loops infinitely

我正在编写一个脚本来添加一个命名的Cron作业,该作业可以更新单个用户,大约每5分钟运行一次。我的问题是,每隔一秒钟左右,每个用户都会反复运行作业。下面是我在函数中放置的代码。php文件。这是我第一次使用WordPress尝试WP Cron功能,我想知道我是否正确设置了作业。function so_custom_cron_schedule( $schedules ) { $schedules[\'every_5_minutes\'] = array( \'inter