Wordpress 使用WP_查询正确显示订单更改时的所有帖子

Wordpress 使用WP_查询正确显示订单更改时的所有帖子,wordpress,Wordpress,提前为可能令人困惑的标题感到抱歉,但我在标题这个问题上花了很长时间 以下是背景:我正在使用无限滚动从wordpress站点上我的博客页面的分页链接加载新帖子。目前,我将WP_Query“posts_per_page”属性设置为5,因此每页5篇文章。这些页面中的大多数都是按post meta值排序的,post meta值是一个投票分数,因此它们会不断变化 因此,更有可能的是,当有人滚动浏览帖子时,帖子的顺序实际上会发生变化。这会导致一篇文章出现两次(例如,由于其他人的投票,它可能会从第四名下降到第

提前为可能令人困惑的标题感到抱歉,但我在标题这个问题上花了很长时间

以下是背景:我正在使用无限滚动从wordpress站点上我的博客页面的分页链接加载新帖子。目前,我将WP_Query“posts_per_page”属性设置为5,因此每页5篇文章。这些页面中的大多数都是按post meta值排序的,post meta值是一个投票分数,因此它们会不断变化

因此,更有可能的是,当有人滚动浏览帖子时,帖子的顺序实际上会发生变化。这会导致一篇文章出现两次(例如,由于其他人的投票,它可能会从第四名下降到第七名,而另一个用户正在从第1页滚动到第2页)。同样,另一篇文章也不会出现,因为它现在跳到了查询中已经通过的点(例如从第七跳到第四)

因此,为了解决这个问题,我正在努力想办法防止重复和某些帖子因为帖子顺序的改变而根本不显示。如果有人对如何解决这个问题有比我展示更好的想法或方法,请发布它

因此,以下是代码中的相关流程:

if( isset( $_SESSION['disp_posts'] ) && $paged > 1 )
{
    $disp_posts =  $_SESSION['disp_posts'];
    $paged = 1;
}

if(is_home())
{
    $args = array(
    'post_status' => 'publish',
        'meta_key' => 'vote_score',
        'orderby' => 'meta_value_num',
        'post__not_in' => $disp_posts,
        'order' => 'DESC',
        'posts_per_page' => '5',
        'paged' => $paged);

        $wp_query = new WP_Query( $args );
}  

//run loop here
$disp_posts[] = $post->ID;

//after loop 

session_start();
$_SESSION['disp_posts'] = $disp_posts; 
$\u SESSION['disp\u posts']保存所有已显示的帖子ID。(注意,我还有一些代码,如果$paged==1,则会破坏会话)。因此,这里的想法是: 1) 保存所有已显示的帖子,并将其从下一页的查询中删除。 2) 通过将$paged固定为1,您可以确保尚未显示的最高评分的帖子正在显示

这在一定程度上是可行的;查询帖子工作正常。我遇到的问题是:我总共有21篇文章,每页5篇,这意味着总共有5页。但是,分页在第3页停止。考虑到这一点,这是有意义的,因为从查询中删除所有帖子后,到第3页时,查询中只有11篇帖子(10篇保存到$disp_posts),即3页。因此,即使存在第4页,它也不会在分页中出现,因为第4页大于最大页数(3)。这就是我被卡住的地方。 有人知道如何用max_num_pages解决这个问题吗?或者一个替代方案来完成我在这里要做的事情


谢谢

无限卷轴真的有必要吗?有时候,最简单的解决方案可能是最无聊但对用户体验最友好的解决方案。如果顺序经常改变,那么我不确定使用无限滚动来实现这一点是否明智,因为无论哪种方式,您都必须刷新以获得“真实”的顺序,而不使用无限滚动进行Im测试。我只是说这就是我创作它的目的。