問題描述

我意識到有一些問題圍繞著我解決的方式進行跳舞,但我相信我正在尋找具體的東西。

這實際上是兩部分問題:

1) 我的目標是讓 WordPress 在網路 (multi-site) 模式下執行,我試圖找出一種基本上”group” 特定網站的方法。我知道”Multi-Network” 外掛,但我質疑這是最好的方法嗎?這裡的關鍵是允許特定使用者新增/編輯自己的 sub-network 中的站點。

2) 這是這篇文章的關鍵問題… 我想知道最好的方法,這將允許我本質上查詢從這個”sub-network” 的網站的帖子。所以,例如,如果這個 sub-network 中有 10 個站點,並且每個站點都在自定義帖子型別中建立了稱為”news” 的帖子,那麼我希望能夠顯示 10 個最近釋出的 10 個站點的帖子。

注意:我需要能夠建立 sub-networks 的乘法,這反過來意味著對最新發布的”news” 的查詢只能顯示屬於正確組的帖子。

最後 – 我確實認識到解決方案存在這樣的事情,但我正在尋找最好的方法在這兩種情況下,需要最低數量的資料庫載入/查詢。我也非常希望透過我的 functions.php 檔案中的程式碼來執行此操作,而不是安裝建立額外膨脹的外掛。

我很樂意接受任何建議,感謝任何回應。

最佳解決方案

我知道你說你不想安裝一個 plug-in,但這正是你想在這種情況下做的。將程式碼放在主題的 functions.php 檔案中需要您在 sub-network 中的所有站點使用相同的主題,或者保留同一檔案的多個副本。另一方面,您可以為網路建立一個簡單的 plug-in 來封裝功能,然後 activate it on the network,並立即具有隻有一個檔案來維護的功能。這實際上會比依賴於您的 functions.php 檔案創造更少的膨脹。

這裡要注意的是,您將需要迴圈訪問網路上的每個站點以查詢您的帖子或執行自定義查詢。我會選擇第二個例程,因為雖然它有點複雜,但它是一個單一的查詢,而不是每個部落格的不同查詢。

基本上… 您需要執行以下操作:

  1. 獲取網路中所有部落格 ID 的列表/sub-network 。如果使用香草安裝,可以在 wp_blogs 表中找到。只需做一個簡單的 SELECT 查詢來載入一個陣列,然後你可以迴圈新增每個部落格到你的主要查詢。

  2. 建立一個迴圈,將每個部落格新增到大型查詢中。您將需要 JOIN 表和 blog_id(wp_blogs),post_id(wp_BLOG_posts) 和自定義分類法進行搜尋。

就像我說的那樣,這不是一個簡單的解決方案 (SQL 語句將會非常複雜,我沒有時間在此刻破解它),但是它將是一個單一的語句來完成所有的工作。

或者…

  1. 獲取部落格 ID 的列表並將其儲存在陣列中。

  2. 透過您的陣列迭代查詢網路中的每個部落格,並將您的匹配 (具有特定分類術語的帖子) 附加到單獨的陣列。

使用替代方法,您必須為網路中的每個部落格執行單獨的查詢。如果你的網路是 10-20 個網站,這不是太多的問題。如果您的網路是 200-500 個網站,預計會出現一些效能問題才能開始播放。

此外,如果可能,您應該快取查詢的結果。如果它是在多個頁面載入 (即,透過網路共享的側邊欄小工具) 上執行,則只有當有新資料可以執行時才需要執行查詢。否則,提供快取的結果,這樣您就不會減慢網路速度。

參考文獻

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