如果有一个WordPress多站点网络,有一个主博客,并且假设所有内容都已移动到该博客上,那么如何将网络重新折叠为标准的WordPress非网络非多站点安装?
将多站点WordPress安装转换为单站点
现在,我已经完成了将站点从多站点安装提取到单个实例的步骤:
设置WP的干净副本,但不要安装它查找站点ID,从博客复制文件。将目录/ID/文件复制到新WP uploads文件夹将站点使用的主题及其使用的任何插件复制到新WP content文件夹中的相应文件夹中备份多站点数据库,但仅备份目标站点的表以及使用MySQL workbench或等效工具的用户和usermeta表将备份还原到新数据库并更改表名前缀因此,它们都是相同的,例如使用MySQL workbench或查询浏览器将“wp\\u SITEID\\uuu”改为“wp\\uu”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-config.php 但不要单击“运行安装”创建默认设置。htaccess文件如果permalinks正在使用,或者只需访问wp admin中的permalinks页面,那么接下来需要更新数据库中的所有旧URL。理想情况下,使用安全的搜索/替换工具,如wp-cli 或其通用前体search/replace db by interconnect/it. 专门更换blogs.dir/SITE_ID/files
具有uploads
, 如果要更改网站URL,请搜索oldsite.com
并替换为newsite.com
.EDIT:
正如@Jake发现的那样,我忘了提及您可能需要采取的最后步骤,例如搜索/替换旧URL。我已经相应地更新了列表。可以在不重新安装新博客的情况下删除多站点安装。遵循步骤。
创建wp内容的备份、数据库转储和文件备份WP_ALLOW_MULTISITE
在wp配置中。php收件人FALSE
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 );
*/
从中删除MU设置.htaccess
, 如以下来源:# 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
; 在工具中使用follow-sql语句,如phpMyAdmin或Adminer
`ALTER TABLE `wp_users` DROP `spam`, DROP `deleted`;`
可以删除下表:wp\\u博客版本wp\\u博客版本wp\\u注册日志wp\\u注册wp\\u站点wp_
到您的数据库前缀)
现在你只有网络上其他博客的最后几张表了。如果您也将其用于此内容,那么请在之前通过WordPress导出为XML导出此内容,然后在干净的单一安装中立即导入。
实际上,这是可能的,而且相当容易做到;我自己做过好几次了。
有一些事情需要考虑。
wp配置。php,定义是多站点还是单站点。htaccess,其中包含支持多站点定义的重写规则以及为支持多站点定义而创建的附加表(?)在wp config中,更新永久链接会将站点还原为单站点/默认模式。然后,您所要做的就是清理数据库。
如果由于某种原因,您无法访问wp管理员来更新永久链接,只需删除您的。htaccess文件。WordPress将在单站点模式下为您重新创建它。
我会尽力找到代码/支持文章的链接,并用它更新答案。
这里有一个链接,指向支持论坛上的一个项目http://wordpress.org/support/topic/revert-to-single-site
即使在WP 3.5.1中,这里的基本过程也能很好地工作:如果您将子网站命名为某物,则必须更改数据库中的链接以删除该名称。如果我的子网站命名为。。。我的网站。com/comics然后在遵循上述步骤后,您的WP将查找mysite。com/comics并在永久链接上获取错误。编辑WP-OPTIONS表格,查找/漫画扩展并将其删除。此外,请检查上载目录是否指向正确的位置-它可能仍然显示博客。目录条目,现在应指向wp内容/上载/
最重要的一点是,你仍然应该do have 线路:
define( \'WP_ALLOW_MULTISITE\',
...
但应将其更改为更新
define( \'WP_ALLOW_MULTISITE\', 0 );