移动站点时Wordpress数据库的更改

将Wordpress安装从一个地方移动到另一个地方时,您需要注意许多事项。如果正确创建了模板,则将使用对bloginfo('home')的调用,而不是使用静态链接,但是您将需要更新这些链接以使Wordpress安装正常工作。

文件放置到位后,数据库连接详细信息已被编辑并创建了数据库,数据库中需要进行许多更改以使您的Wordpress安装工作。

最重要的更改在选项表中。此表中有两个对您的URL的引用,必须进行更改才能阻止Wordpress重定向回到您的旧站点。这必须通过数据库访问来完成,因为当您尝试登录stie时,Wordpress将重定向您。

UPDATE wp_options SET option_value = 'http://www.example.com' WHERE option_name = 'siteurl';
UPDATE wp_options SET option_value = 'http://www.example.com' WHERE option_name = 'home';

帖子表在guid列中包含一个确定的引用,而在帖子内容表中包含一个可能的引用。这些项目不太重要,但是可以。这里是更新这些项目所需的SQL命令。

UPDATE wp_posts SET guid = REPLACE(guid, 'http://www.example2.com', 'http://www.example.com');
UPDATE wp_posts SET post_content = REPLACE(post_content , 'http://www.example2.com', 'http://www.example.com');

帖子元数据中可能存在静态链接的奇怪例子,在这种情况下,您可能还希望在wp_postmeta表上运行以下内容。

UPDATE wp_postmeta SET meta_value = REPLACE(meta_value , 'http://www.example2.com', 'http://www.example.com');

如果您的注释表中有对旧站点的引用,则可能还需要更改这些引用。

UPDATE wp_comments SET comment_content = REPLACE(comment_content , 'http://www.example2.com', 'http://www.example.com');
UPDATE wp_comments SET comment_author_url = REPLACE(comment_author_url , 'http://www.example2.com', 'http://www.example.com');

我将所有这些语句放在一个块中,每个语句都使用$wpdb对象执行。

$new_site = 'http://www.example.com';
$old_site = 'http://www.example2.com';
 
// 更新选项
$wpdb->query("UPDATE " . $wpdb->prefix . "options SET option_value = '" . $new_site . "' WHERE option_name = 'siteurl';");
$wpdb->query("UPDATE " . $wpdb->prefix . "options SET option_value = '" . $new_site . "' WHERE option_name = 'home';");
 
// 更新帖子
$wpdb->query("UPDATE " . $wpdb->prefix . "posts SET guid = REPLACE(guid, '" . $old_site . "', '" . $new_site . "');");
$wpdb->query("UPDATE " . $wpdb->prefix . "posts SET post_content = REPLACE(post_content , '" . $old_site . "', '" . $new_site . "');");
 
// 更新postmeta
$wpdb->query("UPDATE " . $wpdb->prefix . "postmeta SET meta_value = REPLACE(meta_value , '" . $old_site . "', '" . $new_site . "');");
 
// 更新评论
$wpdb->query("UPDATE " . $wpdb->prefix . "comments SET comment_content = REPLACE(comment_content , '" . $old_site . "', '" . $new_site . "');");
$wpdb->query("UPDATE " . $wpdb->prefix . "comments SET comment_author_url = REPLACE(comment_author_url , '" . $old_site . "', '" . $new_site . "');");

将此添加到您的Wordpress安装中,以便在加载页面时运行。这可能functions.php在当前主题的文件内。或者,您可能希望将其作为单独的文件运行,只需在脚本顶部包含wp-load.php即可引导Wordpress。

您可能会注意到,此语句集合中缺少的一件事是对特定于插件的语句的任何引用。插件增加了难度,因为有些将其数据存储在自定义表中,而另一些将其数据存储为选项表中的序列化数组。因此,您需要将它们添加到上面的脚本中,以更改它们可能包含的所有引用。我发现有用的一件事是简单地停用然后重新激活插件,这将解决大多数问题。