マルチサイトWordPressインストールを単一サイトに変換する


17

メインブログを含むWordPressマルチサイトネットワークがあり、すべてのコンテンツがそのブログに移動したと仮定した場合、ネットワークをどのようにして標準のWordPress非ネットワーク非マルチサイトインストールに戻すのでしょうか?


以下に2つの役立つリンクを見つけました。これは可能です。ここで役立つ情報を見つけました:wpmututorials.com/how-to/how-to-disable-multisiteそしてここ:wordpress.org/support/topic/…どうなるか見ていきます。

表現するより良い方法は、ネットワークから単一のサイトを抽出することだと思います。ネットワークを折りたたむと、メインサイトでのみ機能し、その上で作成されたサイトは機能しません。
サンチョテファト

回答:


17

マルチサイトインストールからシングルインスタンスにサイトを抽出する手順を実行しました。

  1. WPのクリーンコピーを設定しますが、インストールしないでください
  2. サイトIDを見つける
  3. blogs.dir / ID / filesから新しいWPアップロードフォルダーにファイルをコピーします
  4. サイトが使用するテーマと使用するプラグインを、新しいwp-contentフォルダー内の適切なフォルダーにコピーします
  5. マルチサイトデータベースのバックアップを作成します。ただし、MySQLワークベンチまたは同等のツールを使用して、ターゲットサイトのテーブルとユーザーおよびユーザーメタテーブルのみをバックアップします。
  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のような安全な検索/置換ツール、または、interconnect / itによる汎用の前駆体検索/置換dbを使用します。具体的にはに置き換えます。サイトのURLを変更する場合blogs.dir/SITE_ID/filesuploads、を検索しoldsite.comて置き換えnewsite.comます。

かなりの労力とデータベースの編集には注意する必要がありますが、既存のマルチサイトからすべての設定などをそのままにして単一のサイトを抽出できるのはそれだけです。

編集:

@Jakeが見つけたように、私はあなたが取る必要があるかもしれない最終ステップを言及するのを忘れていました。古いURLの検索/置換。それに応じてリストを更新しました。


SITEID正しいサイトID に変更しても、手順7で何も機能せず、効果もありませんでした。その代わりに、テーブルでsiteurlhomeオプションを更新する必要がある可能性が高いことに注意してwp_optionsください。これの残りはかなり良いチェックリストでした。ありがとう。
ジェイク

また、変更する場合は、古いドメイン/新しいドメインのデータベースで検索と置換を行う必要があります。そして、ほぼ間違いなく、画像/ファイルへのリンクが正しいことを確認するために、blogs.dirまたはuploads / sitesの検索と置換を行う必要があります。ただし、WPのシリアル化されたデータはすべて注意してください。MYSQLでオープンな検索と置換を実行することはあまり安全ではありません。interconnectit.com/products/…の
Jake

@Jakeおかげで、私は、URLの変更の文脈を忘れて、あなたがしている右の私は完全を期すためにあることを追加し、既存のURLのステップを検索/置換を逃した
sanchothefat

@Jake私は詳細には触れませんでしたが、手順7では基本的に、抽出するサイトに属していないユーザーを削除し、正しいアクセス許可が与えられていることを確認します。それは本当にクリーンアップタスクです。
サンチョテファ

最初のカップルだけがエラーを返しただけなのに、彼らが何をしたかは理解していましたが、何かが足りなかったのかもしれません。誤解しないでください、これは他のものなしで非常に役に立ちました。将来の使用のために注意してください。ありがとう!
ジェイク

5

新しいブログを再インストールせずにマルチサイトインストールを削除することができます。手順に従ってください。

  1. wp-contentのバックアップ、データベースダンプ、およびファイルバックアップを作成します。
  2. WP_ALLOW_MULTISITEwp-config.phpの定数をFALSE
  3. のMU設定を削除またはコメント化しますwp-config.php

    /**
    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でwp-admin/options-permalink.php結果がコピー.htaccessできない場合は、WPでこのファイルへの書き込み権限をコピーします。

  6. テーブル内の不要なエントリを削除しますusers。phpMyAdminやAdminerなどのツールでfollow sqlステートメントを使用します

    `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としてエクスポートし、クリーンシングルインストールでインポートします。


1
これは良い答えですが、私はあなたの指示が私にルートサイトを与えるだろう一方で彼は、関係なく、IDのいずれかのサイトを抽出するために使用することができるよう@sanchothefatずつを受け入れてきました
トム・J Nowell

1

実際、それは可能であり、かなり簡単です。私はそれを何回かしました。

考慮すべきことがあります。

  1. マルチサイトかシングルサイトかを定義するwp-config.php
  2. マルチサイトをサポートする書き換えルールを含む.htaccess
  3. マルチサイトをサポートするために作成された追加のテーブル

wp-configのmulti site define(?)をコメントアウトしてパーマリンクを更新すると、サイトがシングルサイト/デフォルトモードに戻ります。その後、データベースをクリーンアップするだけです。

何らかの理由でwp-adminにアクセスしてパーマリンクを更新できない場合は、.htaccessファイルを削除してください。WordPressは、シングルサイトモードでそれを再作成します。

コード/サポート記事へのリンクを見つけて、回答を更新するために最善を尽くします。

サポートフォーラムhttp://wordpress.org/support/topic/revert-to-single-siteの 1つの項目へのリンクを次に示します。


0

ここでの基本プロセスは、WP 3.5.1でもうまく機能します。1つの明確化:サブサイトに何か名前を付けた場合、データベース内のリンクを変更してその名前を削除する必要があります。サブサイトの名前が... mysite.com/comicsの場合、上記の手順を実行した後、WPはmysite.com/comicsを探し、パーマリンクでエラーを取得します。/ comics拡張を探してWP-OPTIONSテーブルを編集し、削除します。また、Uploadsディレクトリが適切な場所を指していることを確認します-まだblogs.dirエントリが表示されている場合があり、代わりにwp-content / uploads /を指す必要があります。


これを編集してスタンドアロンの回答にしてください。他の回答の1つに対するコメントである可能性があります。
s_ha_dum

0

見逃してはならない非常に重要なポイントは、それについてはあまり語られていませんが、あなたはまだラインを持っているべきだということです:

define( 'WP_ALLOW_MULTISITE',...

しかし、それを更新して変更する必要があります

define( 'WP_ALLOW_MULTISITE', 0 );

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.