Jer*_*emy 1 php wordpress themes loops
有没有办法让每次有人刷新我的自托管 WordPress 博客的主页时都会显示不同的帖子?
目前我将主页设置为仅显示 1 篇文章,但这只是最新的一篇。我希望每次有人访问我的网站时都会有所不同,从所有帖子的存档中随机提取帖子。
这是我正在使用的主题中当前循环的样子:
<?php
}
// Load main loop
if ( have_posts() ) {
// Start of the Loop
while ( have_posts() ) {
the_post();
?>
有什么办法可以实现这一点吗?
我也不想保留“博客页面最多显示 1 个帖子”设置,因为这会弄乱我的搜索结果(每个结果都在单独的页面上),但我只想在主页循环上显示 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');
    }
}
这将检查您是否在主页上,以及它是否是主要查询(因此只有主要帖子查询是目标),如果是这样,则将设置为orderby,rand因此每次随机帖子都会出现在主页。
请注意,如果您的主页上有分页,这将始终以随机顺序对您的帖子进行排序,因此在这种情况下,您可能需要使用 WP_Query 类或 query_posts() 在循环上构建自定义查询。