問題描述

我正在運行最新版本的 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。