簡體   English   中英

WordPress —如何使隨機帖子出現在主頁上?

[英]Wordpress — how to make a random post appear on home page?

每當有人刷新我自托管的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');
    }
}

這將檢查您是否在主頁上,以及它是否是主要查詢(因此僅針對主要帖子查詢),並且如果為true,則將orderby設置為rand ,因此每次出現隨機帖子時在主頁上。

請注意,如果您在首頁上有分頁,這將始終以隨機順序對帖子進行排序,因此在這種情況下,您可能希望通過使用WP_Query類或query_posts()在循環中構建自定義查詢。

    <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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM