【问题标题】:Wordpress -- how to make a random post appear on home page?Wordpress - 如何使随机帖子出现在主页上?
【发布时间】:2014-09-06 20:01:44
【问题描述】:

每次有人刷新我自托管的 Wordpress 博客的主页时,有什么方法可以显示不同的帖子?

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

这是我正在使用的主题中当前循环的样子:

<?php
}

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

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

有什么办法可以做到吗?

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

【问题讨论】:

    标签: php wordpress loops themes


    【解决方案1】:

    最好的方法是通过挂钩 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');
        }
    }
    

    这将检查您是否在主页上,以及它是否是主查询(所以只有主帖子查询是目标),如果是这样,将设置 orderbyrand,所以每次主页上都会出现一个随机帖子。

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

    【讨论】:

      【解决方案2】:
          <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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-08
        • 2020-05-12
        • 1970-01-01
        • 1970-01-01
        • 2013-09-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多