对随机显示的帖子在自定义帖子类型上使用$Seed

时间:2014-06-27 作者:user2648610

我看到了这个link 随机显示帖子而不重复。但是,如何将其应用于自定义帖子类型?

下面是我在函数中使用的使其随机显示的内容。

    session_start();

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

function edit_posts_orderby($orderby_statement) {

    $seed = $_SESSION[\'seed\'];
    if (empty($seed)) {
      $seed = rand();
      $_SESSION[\'seed\'] = $seed;
    }

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

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

这是未经测试的,但我认为它应该有效。在中添加筛选器pre_get_posts 如果它是您的post type archive,则在post type archive主查询之后的任何查询中删除它。

function wpd_add_posts_orderby( $query ){
    if( $query->is_post_type_archive(\'your-cpt\') ){
        add_filter(\'posts_orderby\', \'edit_posts_orderby\');
    } else {
        remove_filter(\'posts_orderby\', \'edit_posts_orderby\');
    }
}
add_action( \'pre_get_posts\', \'wpd_add_posts_orderby\' );

结束

相关推荐