鹿泽笔记 - 记录互联网技术知识,工作与生活点滴的个人博客

WordPress批量修改文章信息的简单常用的方法

是否遇到过如下几种状况:

  • 博客更换域名,博客文章的内容也要跟着换
  • 使用的图片地址更换了
  • 写了很多文章,回过头来想切换作者
  • 想删除某个留言者的所有留言
  • 想更改某个留言者所有留言的网站URL
  • 想要禁用所有文章的pingback
  • 想要禁用所有文章的评论功能

所有的这些,都涉及到一个关键词:批量修改。如果在WordPress后台,手动地去一个一个修改文章内容,相信会让人很抓狂,对一些拥有上千篇文章的博客来说,几乎是不可能完成的。本文将如何使用SQL语句来操作数据库,实现数据的批量修改。

如果没学过数据库的相关知识,肯定不知道SQL是什么,但是本文所涉及到的内容不需要了解数据库的知识,也不需要精通SQL语句的编写,完全可以直接使用本文提到的SQL,下面我们将分条介绍各个SQL语句的功能,所有语句都使用默认的 wp_ 表前缀,如果不是,请自行更改。

开始之前,先介绍以下如何执行SQL语句,进行批量操作。现在一般的空间都是用phpmyadmin来管理数据库,这里将以phpmyadmin为例来介绍如何执行SQL语句:

进入phpmyadmin管理页面,然后进入博客对应的数据库

菜单栏有个 SQL 选项,点击进去

出现一个SQL语句的输入框,现在就可以在里面输入SQL语句了

输入完毕,点击 执行 ,将执行刚才输入的SQL语句

SQL语句执行完毕,文章也被批量修改了,现在去看看文章是否都被更改了

最后提个醒:以下介绍的SQL语句都在我的博客上做过测试,但是尽管如此,操作数据库之前都要先备份一下数据库;定期备份数据库是好习惯。

1、批量修改文章内容

如果想替换之前写过的所有文章中的某些内容,如更换博客的名称,更换博客的网址,更换文章配图的链接等,可以使用以下SQL语句:

UPDATE wp_posts
SET post_content = replace( post_content, '内容1', '内容1' );

该语句的功能是将所有文章中的 内容1 字眼,全部替换成 内容2,可以根据需要做一些更改。因为文章内容在数据库中是以HTML代码形式存储的,所以以上SQL语句同样可以替换HTML代码。

如果只是想更改文章插图的链接,而不想影响其它的链接,可以使用以下SQL语句,所有src=”oldurl”被替换成了src=”newurl”。

UPDATE wp_posts    
SET post_content =    
REPLACE (post_content, 'src="oldurl', 'src="newurl');   

如果是以图片附件形式上传的话,需要更改图片附件的GUID

UPDATE wp_posts  
SET  guid = REPLACE (guid, 'oldsiteurl', 'newsiteurl')  
WHERE post_type = 'attachment';  

2、批量修改文章摘要

文章摘要就是在WordPress后台编辑文章时,”摘要”框中输入的内容,如果想批量更改文章摘要,可以使用以下语句:

UPDATE wp_posts  
SET post_excerpt = replace( post_excerpt, '内容1', '内容2' );  

该语句的功能是将所有文章摘要中的 内容1 文字,全部替换成 内容2 。

3、批量修改文章的作者

假设博客有两名注册用户,用户1和用户2,你想将用户1的所有文章划归到用户2名下,这时候该怎么办呢?可以执行以下语句:

UPDATE wp_posts  
SET post_author = 用户1id  
WHERE post_author = 用户2id; 

那如何获得 用户1id 和 用户2id 呢?可以执行以下SQL语句:

SELECT ID, user_nicename, display_name FROM wp_users;

这时将列出博客上所有的注册用户的ID,昵称和公开显示的名称,现在就可以找到对应用户的ID了。

SQL就可以这样写了:

UPDATE wp_posts  
SET post_author = 用户1id 
WHERE post_author = 用户2id ;  

4、批量修改文章评论者的网站URL

假设,博客有个非常忠实的读者,给博客文章留下很多有用的评论,同时评论都填写了留言者的网站URL,但是有一天博客域名换了,并请求更新留言中的网站URL,那怎么办?手动一个一个改,这不太现实。可以使用以下SQL语句:

UPDATE wp_comments  
SET comment_author_url =  
REPLACE( comment_author_url, 'oldurl', 'newurl' )  

以上语句,将留言者所有旧的网站链接oldurl,更改为新的网址newurl。

5、禁用所有文章的pingback功能

开启pingback功能,可以在别人引用文章链接的情况下,发送通知,但是该功能似乎对我们的文章没多大帮助,那为何不把pingback给禁止了呢?在WordPress后台 – 设置 – 讨论,取消勾选”接收来自外部博客的引用通告(pingbacks 和 trackbacks)”,这样以后的文章都不开启pingback,但是该选项不会对之前的已发布的文章起作用,还是要用到SQL:

UPDATE wp_posts  
SET ping_status = 'closed';  

6、删除所有文章的修订版

在通常情况下,文章的修订版对大多数人来说没多大意义,而且修订版的数量会随着修改文章的次数不断增长,这会增加数据库的查询速度,这并不是什么好事。网上有很多教如何禁止修订版的文章,还有很多插件可以删除文章修订版,可以自己搜索看看。如何使用SQL语句,删除所有已产生的文章修订版数据:

DELETE a,b,c  
FROM wp_posts a  
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)  
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)  
WHERE a.post_type = 'revision';  

7、删除某个评论者的所有评论

如果博客想要删除某个评论者的所有评论,可以使用以下SQL语句。

(1)根据留言者的博客URL进行删除,以下SQL语句将删除所有URL为 某个链接 的评论

DELETE from wp_comments  
WHERE comment_author_url LIKE '%url链接%';  

(2)根据留言者的昵称进行删除,以下语句将删除所有昵称为 example 的评论

DELETE from wp_comments  
WHERE comment_author = 'example';  

(3)根据留言者的Email进行删除,以下语句将删除所有Email为 某个邮箱地址 的评论

DELETE from wp_comments  
WHERE comment_author_email = '某个邮箱地址';  

8、关闭文章评论功能

有时候博客可能需要关闭文章的评论。在WordPress后台 – 设置 – 讨论,那里取消勾选”允许人们发表新文章的评论”,以后发表的文章默认是关闭评论的。但是之前已经发表的文章,若想关闭评论需要一篇一篇地去修改评论设置,这是一件比较痛苦的事情。以下SQL语句可以轻松地批量关闭文章评论:

(1) 关闭所有旧文章的评论:

通常情况下,一篇旧文章就很少会有人发表评论了,一般访问旧文章的访客大都来自搜索引擎,这是好事,但是这部分访客还会提出一些新问题,尤其是技术问题,但是可能文章中提到的技术细节已经淡忘,这时候会很难办。最好的做法还是还是禁用旧文章的评论,以下SQL将禁止2009-01-01之前发表的所有文章的评论,可以根据需要修改日期:

UPDATE wp_posts  
SET comment_status = 'closed'  
WHERE post_date < '2009-01-01' AND post_status = 'publish';  

(2) 关闭所有文章的评论:

关闭所有文章的评论,可以使用以下SQL语句:

UPDATE wp_posts  
SET  

👋 感谢您的观看!

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享