如何在随机功能后保存帖子在主页上的位置?

时间:2014-07-31 作者:Valera Iliyin

我使用以下代码在主页上显示随机帖子:

<?php  global $query_string; query_posts($query_string . "&orderby=rand"); ?>
当页面刷新时,帖子位置会反转。是否可以保留职位一段时间?我希望职位每小时更换一次。

1 个回复
SO网友:Dan Bough

您需要更改查询帖子的方式,以便可以将种子值传递给MySQLs RAND函数。如果您的帖子在同一小时内显示,则该种子(以及您的帖子顺序)将保持不变。

This post 显示了一个示例。我对其进行了修改,以显示如何按小时进行:

在你的主题函数中试试这个。php文件:

function hour_random_posts_orderby( $orderby ) {
    $seed = floor( time() / 3600 );
    $orderby = str_replace( \'RAND()\', "RAND({$seed})", $orderby );
    return $orderby;
}
现在查询如下随机帖子:

<?php
$args = array(
    \'orderby\'        => \'rand\'
);

add_filter( \'posts_orderby\', \'hour_random_posts_orderby\' );
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) {
    while ( $the_query->have_posts() ) {
        $the_query->the_post();
        ....
    }
}
else {
    echo "<p>No posts found</p>";
    ....
}
....
wp_reset_postdata();
remove_filter( \'posts_orderby\', \'hour_random_posts_orderby\' );
?>

结束

相关推荐

Pre_Get_Posts导致自定义帖子出现在‘Pages’菜单下

为了启用自定义后期归档的分页,我添加了pre\\u get\\u posts函数。但是,有趣的是,这导致我的自定义帖子在“页面”菜单下被复制。以下是导致问题的代码。请告知。 function truck_pre_pagination( $qry ) { if ( $qry->is_main_query() ) { $qry->set(\'orderby\',\'date\'); $qry->set