Wordpress - 如何发布随机帖子出现在主页上?

时间:2014-09-06 20:01:45

标签: php wordpress loops themes

每次有人刷新我自己托管的Wordpress博客的主页时,有没有办法让不同的帖子出现?

目前我将主页设置为仅显示1个帖子,但它只是最新的帖子。我希望每次有人访问我的网站时都会有所不同,从所有帖子的档案中随机抽取一个帖子。

这是我在使用的主题中目前的循环内容:

<?php
}

// Load main loop
if ( have_posts() ) {

// Start of the Loop
while ( have_posts() ) {
the_post();
?>

有没有办法实现这个目标?

我也不想保持&#34;博客页面最多显示1个帖子&#34;设置,因为这会弄乱我的搜索结果(每个结果都在一个单独的页面上),但我只想在主页循环中显示1个帖子。

2 个答案:

答案 0 :(得分:4)

最好的方法是通过挂钩pre_get_posts来修改全局查询。

将此代码插入主题的functions.php:

add_action('pre_get_posts', 'my_pre_get_posts');
function my_pre_get_posts($query) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set('orderby', 'rand');
    }
}

这将检查您是否在主页上,如果它是主查询(因此仅定位主帖子查询),如果是,则将orderby设置为{{1所以每次随机帖子都会出现在主页上。

请注意,如果您在主页上有分页,这将始终按随机顺序排列您的帖子,因此在这种情况下,您可能希望通过使用WP_Query类或query_posts在您的循环上构建自定义查询( )。

答案 1 :(得分:0)

    <li><h2>Random Post</h2>
<ul>
<?php $posts = get_posts('orderby=rand&numberposts=5'); foreach($posts as $post) { ?>
<li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
</li>
<?php } ?>
</ul>
</li>

参考http://codex.wordpress.org/Template_Tags/get_posts