問題描述

說我們有兩個 CPT,一個城市,另一個餐館。每個餐廳位於一個城市 (duh),供應不同型別的食物,不同的小時,不同的價格等。每個餐廳都有一個”city” 元欄位的城市的帖子 ID,其餘的屬性在其他元領域。

我的目標是能夠做一些像 「在所有城市中有義大利餐廳在週日開放的地方」,城市分頁。

這顯然要在每個國家都有規模,有很多城市和餐館。 (是的,類比實際上是 DB 的比例)

進入我心目中的一種方法是搜尋餐館,然後按城市分組,但這聽起來像是可以輕鬆地在一個微不足道的搜尋 (所有在星期一開放的餐廳) 溢位 memory 的東西。

基本上我正在尋找的是一種方式來加入兩個查詢,但任何其他想法都是值得歡迎的

最佳解決方案

這些元查詢將會變得昂貴,並且找出答案並快取它是一個很差的解決方案,那麼為什麼不去問題的根源並調整資料結構?

您的核心資料型別是餐廳,您想要過濾/查詢,以便分類,所以為什麼沒有位置/城市分類?只是因為你有一個城市郵政型別並不意味著你也不能新增一個城市或區域分類。透過 continent -> country -> province -> city 分層結構。

現在您的搜尋是用 tax_query 的餐廳搜尋,指定城市。在省/國家的每一個孩子任期做這個,你有你想要的。

除此之外,這仍然不能避免元查詢,這是您將面臨的第一個效能問題。您目前儲存的任何您將要讓使用者過濾或搜尋的後期後設資料需要分類,或具有同等價值。例如。對於價格,您可能會制定 「每人€10-20」 的範圍,然後讓使用者搜尋,而不是輸入一個精確的值。

所以最終的結果會給你:

  • 一個頁面,當在位置分類法中給出一個術語時,抓住最深的孩子術語,然後迴圈遍歷它們

  • 對於這些孩子的每個術語

    • 對於符合其他搜尋引數的餐廳的查詢,由於效能原因,最多可以有 4 或 5 家餐館

    • 如果有人找到

      • 顯示術語/城市的標題

      • 顯示搜尋結果和指向完整結果頁的連結

我也建議以下事情:

  • 使用 pre_get_posts,這將給您免費分頁,只需將搜尋 UI 放在模板的頂部,如果您可以使用分類歸檔,以便城市/位置分類法更好!

  • 分類法分類法分類法,不要使用後期元查詢。如果你做這個頁面的可擴充套件性和效能將會急劇下降。單個元查詢可以降低網站流量,如果您正在為每個城市做一個,那麼這個頁面將需要很長時間才能載入

最後,考慮這個只是因為你可以查詢這個,並不意味著你應該。對於快速頁面載入的高效資料結構,您需要確定什麼約束是可以接受的。您的資料越多,您的查詢將越貴,或者需要複製和逼近的資料越多。在某些時候,如果您想要查詢任何內容,您將需要彈性搜尋以達到平庸的表現。

使 UX 決定更改使用者可以幫助您的方式進行搜尋,但不要拒絕使用者他們想要什麼。例如。讓使用者選擇預定義的價格範圍或範圍,而不是給他們一個接受任何數字的條目框 (滑塊可以捕捉到最接近的€5,將一個價格較高的元查詢轉換成更快的分類法查詢提及多個條款)

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。