問題描述
我正在執行最新版本的 WordPress 4.4.1,我有一個非常令人沮喪的問題。我執行多站點安裝,並在整個站點使用高階自定義欄位,以允許影像透過管理面板進行內容管理。
在除主要網站之外的每個網站上,如果沒有硬編碼,影像不起作用。例如,在每個頁面上,我允許使用者上傳每個頁面頂部顯示的橫幅。
例如,如果他們在網站#2 上,當他們上傳影像時,它被放入:
/wp-content/uploads/sites/2/YEAR/MONTH/
然而,無論我在模板中嘗試和顯示這些影像的方法,總是會將 URL 錯誤,不包括/sites/siteID/部分。
我第一次以為這是外掛高階自定義欄位的問題,以及嘗試輸出 URL 的方式。我已經排除了這一點,因為我設定了高階自定義欄位來傳遞附件 URL,然後我使用 wp_get_attachment_image_src 將附件 ID 轉換為 URL 。這也不行,所以現在我真的卡住了!
這是我的 wp-config.php 的多站點部分:
/* Multisite */
define('WP_ALLOW_MULTISITE', true);
define('SUNRISE', 'on');
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
我已經嘗試在最後三行評論,認為這可能只是令人困惑的 WordPress 認為網路上的每個網站是第一個主要網站。這沒有幫助
最佳解決方案
一些更古老的程式碼仍然存在於 WordPress 中,特別是在函式內部全域性化變數。一個很好的例子是 get_current_blog_id(),它存在於 wp-load.php 中:
/**
* Retrieve the current blog ID.
*
* @since 3.1.0
*
* @global int $blog_id
*
* @return int Blog id
*/
function get_current_blog_id() {
global $blog_id;
return absint($blog_id);
}
這意味著如果您將 $blog_id 設定為主題,那麼可能會遇到問題。這也適用於 $current_site 和其他一些變數。
根據您的問題的聲音,我猜你自己正在構建一個主題或外掛,所以有很好的機會使用上述變數。良好的做法是將您的變數字首為您的主題所特有的東西。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。