問題描述

給一個 wordpress 多站點網路,用一個主要的部落格,並假設所有的內容已被移動到該部落格,怎麼會將網路崩潰成一個標準的 wordpress non-network non-multisite 安裝?

最佳解決方案

我已經完成了將站點從多站點安裝提取到單個例項的步驟:

  1. 設定一個乾淨的 WP 副本,但不要安裝它

  2. 查詢網站 ID

  3. 將檔案從 blogs.dir /ID /檔案複製到新的 WP uploads 資料夾

  4. 將網站使用的主題和其使用的任何外掛複製到新的 wp-content 資料夾中的相應資料夾

  5. 備份多站點資料庫,但只能使用目標站點和使用者的表以及使用 MySQL 工作臺或等效的 usermeta 表

  6. 將備份還原到新資料庫,並更改表名字首,以使它們都相同,例如。 ‘wp_SITEID_’ 到’wp_’

  7. 使用 MySQL 工作臺或查詢瀏覽器整理使用者和 usermeta 表,如下所示:

    1. DELETE FROM wp_usermeta WHERE user_id NOT IN( SELECT distinct(user_id) FROM wp_usermeta where meta_key LIKE 'wp_SITEID_%' );

    2. DELETE FROM wp_users WHERE ID NOT IN( SELECT distinct(user_id) FROM wp_usermeta where meta_key LIKE 'wp_SITEID_%' );

    3. UPDATE wp_usermeta SET meta_key = REPLACE( meta_key, 'wp_SITEID_', 'wp_' ) WHERE meta_key LIKE 'wp_SITEID_%';

    4. UPDATE wp_options SET option_name = REPLACE( option_name, 'wp_SITEID_', 'wp_' ) WHERE option_name LIKE 'wp_SITEID_%';

  8. 開始 WP 安裝過程以建立 wp-config.php,但不要單擊 「執行安裝」

  9. 建立一個預設的.htaccess 檔案,如果固定連結使用或只是訪問固定連結頁面在 wp-admin

  10. 接下來您需要更新資料庫中的任何舊 URL 。理想的使用安全的搜尋/替換工具,如 wp-cli 或其通用型前體 search/replace db by interconnect/it 。具體替換 blogs.dir/SITE_ID/filesuploads,如果您正在更改您的站點 URL 搜尋 oldsite.com 並替換為 newsite.com

一點點努力,你必須小心資料庫編輯,但這是唯一可以看到,從現有的多個站點提取一個單一的站點,其所有的設定等… 完好無損。

編輯:

由 @Jake 發現我忘了提到您可能需要採取的最後步驟。搜尋/替換舊網址。我已經相應地更新了列表。

次佳解決方案

可以在不重新安裝新部落格的情況下刪除多站點安裝。按照步驟。

  1. 建立 wp-content 的備份,資料庫轉儲和檔案備份

  2. 將您的 wp-config.php 中的常數 WP_ALLOW_MULTISITE 設定為 FALSE

  3. 刪除或註釋 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 );
    */
    
  4. .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
    
  5. 在後端 wp-admin/options-permalink.php 中建立新的固定連結,並且可能將結果複製到.htaccess 中,如果 WP 不可用,則在此檔案上寫入許可權。

  6. 刪除表 users 中的 un-usefull 條目; 在工具中使用 sql 語句,如 phpMyAdmin 或 Adminer

    `ALTER TABLE `wp_users` DROP `spam`, DROP `deleted`;`
    
  7. 可以刪除以下表格:

    • wp_blogs

    • wp_blog_versions

    • wp_registration_log

    • wp_signups

    • wp_site

    • wp_sitemeta

    • wp_sitecategories(僅當存在)

    (將 wp_更改為資料庫字首)

  8. 現在你只有網路的其他部落格的最後一張表。如果您也將使用該內容,然後透過 WordPress 匯出作為 XML 匯出,然後立即匯入到乾淨的單一安裝。

參考文獻

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