有的时候,我们可能需要更换 WordPress 网站的域名,或者需要批量更换网站中的某些文本内容。这时,我们可以通过 phpMyAdmin进行可视化的操作,或者通过 shell 命令行执行 SQL 查询。如果您不习惯直接操作数据库,也可以通过一些插件来进行更改。
另外,还可以将整个 WordPress 数据库从 phpMyAdmin 导出为 .sql 文件,然后在文本编辑器(如 Notepad++ 或 Sublime)中打开该文件,并进行查找和替换,然后通过 phpMyAdmin 重新导入数据库。
更换域名
无论是更换域名,还是从 http:// 更改为 https ://,我们都可以使用 MySQL 的 replace
功能,来替换数据库中的 URL。
如果我们要将 WordPress 网站迁移到不同的域名,例如,从域名old_domain.com
迁移到域名new_domain.com
。或者将数据库中所有http://old_domain.com
替换为https://old_domain.com
,我们可以执行下面的 SQL 语句:
wp_options 表
wp_options
表是 WordPress 配置表,在home
和siteurl
字段中,可以配置网站的 URL 。我们可以执行下面的语句来替换。
UPDATE wp_options SET option_value = replace(option_value, 'old_domain.com', 'new_domain.com') WHERE option_name = 'home' OR option_name = 'siteurl';
wp_posts 表
wp_posts
表的post_content
字段中的包含所有文章内容。如果文章中有指向其他文章的内部永久链接,需要替换该表中的链接 URL。
执行下面的 SQL 语句:
UPDATE wp_posts SET post_content = replace(post_content, 'old_domain.com', 'new_domain.com');
wp_postmeta 表
wp_postmeta
表包含所有的属性和自定义字段,例如 ACF (高级自定义字段)中的meta_value
字段。如果自定义字段中包含旧的链接,也需要在此处替换它们。
UPDATE wp_postmeta SET meta_value = replace(meta_value, 'old_domain.com', 'new_domain.com');
wp_comments 表
wp_comments
表包含所有的文章评论内容,其中也可能包含指向其他文章的旧链接。如果有,可以执行下面的语句更改:
UPDATE wp_comments SET comment_content = replace(comment_content , 'old_domain.com', 'new_domain.com');
Yoast SEO 插件的 wp_yoast_indexable 表
如果您正在使用 Yoast SEO 插件,并将您的数据库升级为Yoast ‘indexibles’。这时要在从一个域名迁移到另一个域名,则需要查找并替换下面字段permalink
、twitter_image
、open_graph_image
和 open_graph_image_metawp_yoast_indexable
。
UPDATE wp_yoast_indexable SET permalink = replace(permalink, 'old_domain.com', 'new_domain.com');
UPDATE wp_yoast_indexable SET twitter_image = replace(twitter_image, 'old_domain.com', 'new_domain.com');
UPDATE wp_yoast_indexable SET open_graph_image = replace(open_graph_image, 'old_domain.com', 'new_domain.com');
UPDATE wp_yoast_indexable SET open_graph_image_meta = replace(open_graph_image_meta, 'old_domain.com', 'new_domain.com');
替换文章中的文本
假设要把牛奇网的网站名称更改为牛奇博客,则可以使用下面的语句更改对应表中的内容。
wp_options 表
需要在wp_options
表中,更改网站的blogname
字段。
UPDATE wp_options SET option_value = replace(option_value, '牛奇网', '牛奇博客') WHERE option_name = 'blogname';
wp_posts 表
需要把wp_posts
表中的所有牛奇网的文本更改为牛奇博客。
UPDATE wp_posts SET post_content = replace(post_content, '牛奇网', '牛奇博客');
wp_postmeta 表
如果使用了高级自定义字段 (ACF) 中的meta_value
字段。则需要替换wp_postmeta
表中包含牛奇网的内容。
UPDATE wp_postmeta SET meta_value = replace(meta_value, '牛奇网', '牛奇博客');
wp_comments 表
wp_comments
表包含所有的文章评论,如果其中包含旧的网站名称,也需要进行相应替换。
UPDATE wp_comments SET comment_content = replace(comment_content , 'niuqi360', 'niuqi');
如何执行上述语句?
在上文中,我们介绍了 WordPress 变更域名或文本所涉及到的表,下面我们来介绍如何执行相应的语句。
通过 phpMyAdmin 执行语句
登录到 phpMyAdmin 后,在左侧列表中中找到并打开对应的数据库。然后,点击页面上方的SQL选项卡,将准备好的查询语句粘贴到对应的输入框中。
在运行这些查询之前,切记做好数据库备份,因为一旦执行是无法撤销的。
然后单击底部的Go按钮执行语句。
通过命令行执行语句
如果是通过 shell 连接的服务器,则可以直接在命令行中运行数据库查询。
执行下面的命令,并输入相关信息连接数据库。
mysql -u root -p database_name
当看到mysql>
提示后,输入准备好的 SQL 查询,然后按回车执行查询语句。
会返回下面的提示:
mysql> UPDATE wp_options SET option_value = replace(option_value, 'old_domain.com', 'new_domain.com') WHERE option_name = 'home' OR option_name = 'siteurl';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 2 Changed: 0 Warnings: 0
mysql> UPDATE wp_posts SET post_content = replace(post_content, 'http://old_domain.com', 'https://new_domain.com');
Query OK, 0 rows affected (0.08 sec)
Rows matched: 354 Changed: 0 Warnings: 0
mysql> UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://old_domain.com', 'https://new_domain.com');
Query OK, 0 rows affected (0.01 sec)
Rows matched: 22 Changed: 0 Warnings: 0
mysql> UPDATE wp_comments SET comment_content = replace(comment_content , 'http://old_domain.com', 'https://new_domain.com');
Query OK, 0 rows affected (0.01 sec)
Rows matched: 10 Changed: 0 Warnings: 0
完成后,退出 MySQL。
exit
通过插件执行替换
如果您不习惯直接操作数据库,那么可以通过安装插件来执行语句。可以安装 Better Search Replace 插件,然后进行可视化的操作。
参考下面的文章:
作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/wordpress/how-to-replace-text-adn-url-in-wordpress/