2016-11-24 41 views
0

我正在爲一家經紀公司的網站工作。他們有一個名爲代理的頁面,其中顯示了所有代理的列表。代理在網站中添加了自定義帖子類型。客戶的要求是,在該頁面的每次訪問時,代理列表應該隨機顯示。我們已經使用orderby,它隨機顯示代理列表。WordPress中的隨機列表,即使在分頁頁面中也保持隨機順序

$wp_query->query('showposts=8&post_type=agent&orderby=rand'.'&paged='.$paged); 

但問題是,它使隨機即使在拼版頁面代理列表。

澄清: 假設有8個代理,我們在每個頁面中顯示2個代理。它向用戶顯示有一個分頁,所以我們得到4頁。

假設這些代理的名字是1,2,3,4,5,6,7,8。我們需要的是,對於訪問者,列表將被隨機化。比方說,當我訪問時,隨機化將是1,3,2,5,4,7,6,8。在第一頁1 & 3將是可見的,在第二頁2 & 5將是可見的,依此類推。

但是,WordPress orderby的功能在於,它甚至可以在分頁頁面中隨機化它。如果我們用上面的例子來考慮它。他們可以在第一頁顯示1,3,在第二頁顯示2,4,在第三頁顯示1,7,在第四頁顯示8。所以,在我的示例中,總是有可能會忽略文章的排列方式5。

現在,我們如何定製它,以確保郵政訂單是隨機的,並且沒有帖子會多次顯示,以供用戶訪問。

回答

1

您需要爲每個頁面創建一個已經加載的帖子數組。

然後,您將能夠在由pre_get_posts觸發的函數中設置post__not_in ids(使用新數組)。當然,您需要添加一個與已經顯示的帖子數組相對應的新查詢參數。

獲取更多信息pre_get_posts,add_query_arg,WP_Query