WordPress 多站網路媒體庫同步設定

需求情境是客戶的網站啟用了多站網路架構,而子站的部分僅作為資料展示用,在維護上客戶希望透過主站就能自動更新子站的內容,因此連同文章的圖片直接使用主站的即可。

在開啟多站網路後,媒體庫的 uploads 資料夾就會多增加一個 sites 的目錄,藉此來存放各子站的圖片,如果是透過複製主站的方式來建立子站,媒體庫的容量就會以倍數增長。

解決方案是請客戶購買 NS Cloner Pro 版,它可以在建立子站時選擇是否要複製媒體庫,如果取消勾選的話就不會再多複製一份出來,然後再使用 WordPress 的勾點 upload_dir 去修改子站的圖片路徑,讓路徑可以對應到主站的媒體庫資料夾。

這樣做的優點是萬一哪天子站要移動到另外一個多站網路底下,只要把修改路徑的勾點移除就好,不會動到資料庫所以不需要複製取代,但缺點是在子站的後台無法正常上傳圖片,如果需要在子站後台上傳圖片,要再另外進行實作了。

替換子站圖片路徑程式碼如下:

/**
 * 替換子站圖片路徑
 */
add_filter(
	'upload_dir',
	function( $data ) {
        // 不是主站才進行替換
		if ( 1 !== get_current_blog_id() ) {
			foreach ( $data as $key => $value ) {
				$data[ $key ] = str_replace( '/sites/' . get_current_blog_id(), '', $data[ $key ] );
			}
			return $data;
		}
		return $data;
	},
	999
);
AI 文章延伸

讓 AI 幫你讀這篇文章

選擇平台後會自動帶入閱讀脈絡,快速整理重點、補齊盲點,並延伸到同站相關文章。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料