2016-09-01 45 views
1

我正在使用Wordpress和我的主頁上的帖子,我希望他們隨機和按名稱訂購。我的意思是,我希望每次都在我的主頁上顯示不同的帖子,然後按他們的名字排序。我改變了我的主題文件中的WP_Query參數,如下所示,但沒有奏效。由於我無法理解的原因,我得到了無關的結果。WP_Query按「rand」和「name」排序?

#setup wp_query 
$args = array(
    'posts_per_page' => $postsperpage, 
    'orderby' => array('rand', 'title'), 
    'order' => 'DESC', 
); 

有什麼辦法可以做到這一點嗎?

p.s.老實說,我對那些不相干地回答問題的人感到厭惡。如果我在互聯網上找到解決方案,我不會問這個問題。如果您有合理的理由,請提醒我或編輯我的帖子,而不是盲目地低估它。

+0

如果你正在使用'rand'什麼用的'name'? 'name'的訂單總是按'name'排序[ –

+0

@KailashYadav最初我在我的博客上有近400個帖子,但其中只有大約20個在我的主頁上顯示。所以我希望他們每次都改變,但仍然喜歡按照名稱順序查看它們。 –

回答

1

As documented:

的OrderBy(串|陣列) - 排序檢索到的帖子由參數。默認爲'date(post_date)'。一個或多個選項可以通過。

所以:

$args = array(
    'orderby' => array('rand', 'name'), 
    'order' => 'DESC', 
); 

但我不認爲這將讓你你想要的結果。您最有可能必須只使用randposts_per_page設置來獲得您想要的帖子數量。獲取所有帖子,然後按名稱排序。

例子:

$args = array(
    'orderby' => 'rand', 
); 
// get X random posts (10 by default) 
$result = new WP_query($args); 

// sort these posts by post_title 
usort($result->posts, function($a, $b) { 
    if ($a->post_title == $b->post_title) 
     return 0; 
    return ($a->post_title < $b->post_title) ? -1 : 1; 
}); 

// Start the loop with posts from the result. 
while ($result->have_posts()) : $result->the_post(); 
    // do your stuff in the loop 
} 
+0

我剛纔提到了那個頁面,試了一下,但它也沒有用。目前,「rand」和「name」排序功能都沒有問題。 –

+0

@BenjaminPark見我的編輯。 –

+0

我對你的潛在解決方案的第一部分沒問題,但是你能否詳細說明「獲取所有帖子並按名稱排序」步驟? –