問題描述

我想了解 get_site_option()get_blog_option()之間的區別。

部落格和網站兩個不同的東西?道歉,如果這個問題似乎是基本的,但是當提到一個 WordPress 的網站,我一直使用這兩個術語非常寬鬆 (意思是同樣的事情) 。我現在想知道是否有區別?

最佳解決方案

get_option()返回當前部落格的選項。

在單站安裝中,目前的部落格是唯一的部落格。所以得到 get_option()返回的選項。


get_site_option()用於檢索選項 network-wide 。這意味著您可以從網路的任何站點獲取相同的選項。

當在單次安裝中使用此功能時,它通常返回相同的東西 get_option()。該值可能會改變,因為 get_site_option()觸發過濾鉤不是由 get_option()觸發的。

請注意,一旦 $wpdb->options 表是 blog-specific,network-wide 選項儲存在 $wpdb->sitemeta 表中,這是具體的多站點安裝。


get_blog_option()是三個函式中唯一沒有作為第一個引數接收選項名稱的函式,但它的第一個引數是 $blog_id

實際上,它在多站點安裝中用於從 ID 已知的特定部落格中檢索選項。

這個功能是什麼?

switch_to_blog( $blog_id );
$value = get_option( $option, $default );
restore_current_blog();

return $value;

如果 $blog_id 與當前部落格 ID 相同,則 WordPress 只會跳過 switch_to_blog 部分,並呼叫 get_option()

此功能在僅用於多站點安裝的 wp-includes/ms-blogs.php 檔案中定義,因此在單站安裝中未定義 get_blog_option()

次佳解決方案

get_site_option() – 獲得廣泛的網路選項。此選項通常新增到多站點 set-up 的 「網路管理設定」 部分。如果我有 50 個網站,那麼去 50 個不同的站點並設定相同的選項值將是一個痛苦。相反,我可以設定一次選項值,並將其應用於所有網站的網路。見 http://codex.wordpress.org/Function_Reference/get_site_option

get_blog_option() – 讓您獲取特定站點的選項值。一個例子可能是獲取每個站點的使用者特定選項的值。所以我可以得到使用者所有的網站,迴圈遍歷站點 ID 列表,並使用 get_blog_option()傳遞 blog_id 和選項名稱,並返回結果。這是一個方便的功能,幾乎完成以下操作:

switch_to_blog( $id );
$value = get_option( $option_name );
restore_current_blog();

參見 http://codex.wordpress.org/Function_Reference/get_blog_option

長話短說:get_site_option()獲得廣泛的網路價值,get_blog_option()獲取給定站點的特定值,而無需首先切換到該站點。

參考文獻

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