如何更改POSTS表中的所有GUID?

时间:2015-12-08 作者:Kvvaradha

最近,我已将WordPress从开发服务器转移到live server。我注意到我必须用live domain url更改所有的“guid”。是否有任何mysql查询或简单函数可用于轻松更改它。

6 个回复
最合适的回答,由SO网友:Peter Salerno 整理而成

应该是这样的:

UPDATE wp_posts SET guid = REPLACE(guid, \'oldurl.com\', \'newurl.com\') WHERE guid LIKE \'http://oldurl.com/%\';
  • oldurl.com - wordpress设置>常规选项中显示的上一个URLnewurl.com - 新建URL

SO网友:George Ts.

为了改进之前的答案,您应该更新所有相关的表格,例如(此处表格前缀为wp\\u1):

UPDATE `wp_posts` SET guid = REPLACE(guid, \'oldsiteurl\', \'newsiteurl\') WHERE guid LIKE \'oldsiteurl%\';

UPDATE `wp_postmeta` SET meta_value = REPLACE(meta_value, \'oldsiteurl\', \'newsiteurl\') WHERE meta_value LIKE \'oldsiteurl%\';

UPDATE `wp_options` SET option_value = REPLACE(option_value, \'oldsiteurl\', \'newsiteurl\') WHERE option_value LIKE \'oldsiteurl%\';
如果你有任何可以重定向的插件,你也应该在那里更改永久链接:

UPDATE `wp_redirection_404` SET url = REPLACE(url, \'oldsiteurl\', \'newsiteurl\') WHERE url LIKE \'oldsiteurl%\';

SO网友:jgraup

使用WP-CLIsearch and replace. 插件MigrateDB 还有一个导出时查找和替换功能,供下次转换时使用。

SO网友:user2186232

WordPress文档警告更改WP数据库中的guid条目:“No No No modHFGen.dll请勿更改此字段的内容,这一点至关重要“参考资料”;

https://wordpress.org/support/article/changing-the-site-url/#important-guid-note

SO网友:farinspace

我忘记了几年前我为这个精确的任务编写了一个SQL生成器:

https://farinspace.github.io/wp-migrate-gen/

基本上,相关SQL如下所示:

UPDATE `wp_options` SET `option_value` = REPLACE(`option_value`, \'a\', \'b\') WHERE `option_value` NOT REGEXP \'^([adObis]:|N;)\';
UPDATE `wp_posts` SET `post_content` = REPLACE(`post_content`, \'a\', \'b\');
UPDATE `wp_posts` SET `post_excerpt` = REPLACE(`post_excerpt`, \'a\', \'b\');
UPDATE `wp_posts` SET `guid` = REPLACE(`guid`, \'a\', \'b\');
UPDATE `wp_comments` SET `comment_author_url` = REPLACE(`comment_author_url`, \'a\', \'b\');
UPDATE `wp_comments` SET `comment_content` = REPLACE(`comment_content`, \'a\', \'b\');
UPDATE `wp_links` SET `link_url` = REPLACE(`link_url`, \'a\', \'b\');
UPDATE `wp_postmeta` SET `meta_value` = REPLACE(`meta_value`, \'a\', \'b\') WHERE `meta_value` NOT REGEXP \'^([adObis]:|N;)\';
UPDATE `wp_usermeta` SET `meta_value` = REPLACE(`meta_value`, \'a\', \'b\') WHERE `meta_value` NOT REGEXP \'^([adObis]:|N;)\';
UPDATE `wp_termmeta` SET `meta_value` = REPLACE(`meta_value`, \'a\', \'b\') WHERE `meta_value` NOT REGEXP \'^([adObis]:|N;)\';
UPDATE `wp_commentmeta` SET `meta_value` = REPLACE(`meta_value`, \'a\', \'b\') WHERE `meta_value` NOT REGEXP \'^([adObis]:|N;)\';
上面的查询将检查并跳过PHP序列化数据。

使用发电机,您可以关闭;跳过序列化数据“;如果新旧字符串长度匹配。

WARNING: 我建议您在运行任何添加/删除/更新内容的查询之前,始终创建数据备份。

SO网友:Ethan O\'Sullivan

正如您所提到的,为了更新到WordPress站点上的新URL,有几个变量需要更改。

去下载Interconnect IT\'s Database Search & Replace Script herelive server 安装WordPress的位置(根目录),并将文件夹重命名为replace (screenshot)http://web.site/replace) 和you will see the search/replace toolsearch for… 字段和中的新URLreplace with… 字段您可以单击“操作”下的“干运行”按钮,查看在执行脚本之前将替换的内容。完成后,请确保删除/replace/ 文件夹

相关推荐

是否可以取消对特定帖子类型的POSTS_PER_PAGE限制?

我想知道我是否可以取消特定帖子类型的posts\\u per\\u页面限制。在存档中。php页面我显示不同的帖子类型,对于特定的“出版物”帖子类型,我想显示所有帖子。我如何在不影响传统“post”类型的情况下实现这一点?