问题描述
给一个 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。