問題描述
給一個 wordpress 多站點網路,用一個主要的部落格,並假設所有的內容已被移動到該部落格,怎麼會將網路崩潰成一個標準的 wordpress non-network non-multisite 安裝?
最佳解決方案
我已經完成了將站點從多站點安裝提取到單個例項的步驟:
-
設定一個乾淨的 WP 副本,但不要安裝它
-
查詢網站 ID
-
將檔案從 blogs.dir /ID /檔案複製到新的 WP uploads 資料夾
-
將網站使用的主題和其使用的任何外掛複製到新的 wp-content 資料夾中的相應資料夾
-
備份多站點資料庫,但只能使用目標站點和使用者的表以及使用 MySQL 工作臺或等效的 usermeta 表
-
將備份還原到新資料庫,並更改表名字首,以使它們都相同,例如。 ‘wp_SITEID_’ 到’wp_’
-
使用 MySQL 工作臺或查詢瀏覽器整理使用者和 usermeta 表,如下所示:
-
DELETE FROM wp_usermeta WHERE user_id NOT IN( SELECT distinct(user_id) FROM wp_usermeta where meta_key LIKE 'wp_SITEID_%' ); -
DELETE FROM wp_users WHERE ID NOT IN( SELECT distinct(user_id) FROM wp_usermeta where meta_key LIKE 'wp_SITEID_%' ); -
UPDATE wp_usermeta SET meta_key = REPLACE( meta_key, 'wp_SITEID_', 'wp_' ) WHERE meta_key LIKE 'wp_SITEID_%'; -
UPDATE wp_options SET option_name = REPLACE( option_name, 'wp_SITEID_', 'wp_' ) WHERE option_name LIKE 'wp_SITEID_%';
-
-
開始 WP 安裝過程以建立
wp-config.php,但不要單擊 「執行安裝」 -
建立一個預設的.htaccess 檔案,如果固定連結使用或只是訪問固定連結頁面在 wp-admin
-
接下來您需要更新資料庫中的任何舊 URL 。理想的使用安全的搜尋/替換工具,如 wp-cli 或其通用型前體 search/replace db by interconnect/it 。具體替換
blogs.dir/SITE_ID/files與uploads,如果您正在更改您的站點 URL 搜尋oldsite.com並替換為newsite.com。
一點點努力,你必須小心資料庫編輯,但這是唯一可以看到,從現有的多個站點提取一個單一的站點,其所有的設定等… 完好無損。
編輯:
由 @Jake 發現我忘了提到您可能需要採取的最後步驟。搜尋/替換舊網址。我已經相應地更新了列表。
次佳解決方案
可以在不重新安裝新部落格的情況下刪除多站點安裝。按照步驟。
-
建立 wp-content 的備份,資料庫轉儲和檔案備份
-
將您的 wp-config.php 中的常數
WP_ALLOW_MULTISITE設定為FALSE -
刪除或註釋
wp-config.php中的 MU 設定,如下所示:/** define( 'MULTISITE', true ); define( 'SUBDOMAIN_INSTALL', false ); $base = '/wordpress/'; define( 'DOMAIN_CURRENT_SITE', 'localhost' ); define( 'PATH_CURRENT_SITE', '/wordpress/' ); define( 'SITE_ID_CURRENT_SITE', 1 ); define( 'BLOG_ID_CURRENT_SITE', 1 ); */ -
從
.htaccess中刪除 MU 設定,如下所示:# BEGIN WordPress RewriteEngine On RewriteBase /wordpress/ RewriteRule ^index.php$ - [L] # uploaded files RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L] # add a trailing slash to /wp-admin RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(.*.php)$ $2 [L] RewriteRule . index.php [L] # END WordPress -
在後端
wp-admin/options-permalink.php中建立新的固定連結,並且可能將結果複製到.htaccess中,如果 WP 不可用,則在此檔案上寫入許可權。 -
刪除表
users中的 un-usefull 條目; 在工具中使用 sql 語句,如 phpMyAdmin 或 Adminer`ALTER TABLE `wp_users` DROP `spam`, DROP `deleted`;` -
可以刪除以下表格:
-
wp_blogs
-
wp_blog_versions
-
wp_registration_log
-
wp_signups
-
wp_site
-
wp_sitemeta
-
wp_sitecategories(僅當存在)
(將
wp_更改為資料庫字首) -
-
現在你只有網路的其他部落格的最後一張表。如果您也將使用該內容,然後透過 WordPress 匯出作為 XML 匯出,然後立即匯入到乾淨的單一安裝。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。