WP_QUERY ORDERBY RANDOM不重复无限滚动一次循环

时间:2013-08-03 作者:Lawrence Brown

我已经找到了很多关于使用多个循环解决这个问题的文档,我发现很难找到一个针对一个自定义循环的解决方案。

问题:我正在使用infinite scroll 将下一页的帖子加载到主页。帖子需要以随机顺序显示,因此我需要存储已显示的帖子,然后在第二次命中查询时将其排除。

<?php $my_query = new WP_Query(array(\'post__not_in\'=> $do_not_duplicate, 
                        \'orderby\' => \'rand\',
                        \'category_name\' => \'projects\', 
                        \'posts_per_page\' => 20, 
                        \'paged\' => $paged));
while ($my_query->have_posts()) : $my_query->the_post();
$do_not_duplicate = $post->ID; ?>

<?php get_template_part( \'entry\' ); ?>
<?php endwhile; ?>
我是用http://codex.wordpress.org/The_Loop#Multiple_Loops_in_Action - 然而,要使用的方法$do_not_duplicate 在第二个循环中。

也许我需要把这件事稍微改变一下,用另一种方式存储显示的帖子,一块饼干?感谢您的指导。

1 个回复
SO网友:Nury Farelo

我在函数中使用此解决方案。php

 /*------ order ------*/
session_start();

add_filter(\'posts_orderby\', \'edit_posts_orderby\');

function edit_posts_orderby($orderby_statement) {

    $seed = $_SESSION["sem"];

        if (empty($seed)) {
          $seed = rand();
          $_SESSION["sem"] = $seed;
        }

        $orderby_statement = \'RAND(\'.$seed.\')\';
        return $orderby_statement;  

}
此外,在显示帖子的页面中,在文件顶部,我将会话变量重置为可以在每次重新加载时以这种方式重新随机排序:

$semilla = rand();

$_SESSION["sem"] = $semilla;
对我来说很有用。

结束

相关推荐

ORDERBY META_VALUE破坏分类术语档案

我有一个带有人员类型分类法的人员职位类型(例如“Staff”)。在Person Type Term Archive页面上,我想按“排序名称”自定义字段排序。为此,我使用pre_get_posts 电话:<?php function my_query_tweaks( $query ) { // stop immediately if we\'re in the admin or not working with the main query if( i