前几天给其他wordpress的网站转移服务器,更换访问域名,主要是内容、图片、链接太多了,一个个改几天都不够用,发现使用数据库SQL命令来批量替换原来的内容非常方便,顺便把这个技术好文章分享过来,记录一下。
所有的这些,都涉及到一个关键词:批量修改。如果在WordPress后台,手动地去一个一个修改文章内容,相信会让你很抓狂,对一些拥有上千篇文章的博客来说,几乎是不可能完成任务。本文将教你如何使用SQL语句来操作你的数据库,实现数据的批量修改。
如果你没学过数据库的相关知识,肯定不知道SQL是什么,但是本文所涉及到的内容不需要你了解数据库的知识,也不需要你精通SQL语句的编写,你完全可以直接使用本文提到的SQL,下面我们将分条介绍各个SQL语句的功能,所有语句都使用默认的 wp_ 表前缀,如果你的不是,请自行更改。
开始之前,先介绍以下如何执行SQL语句,进行批量操作。现在一般的空间都是用PhpMyAdmin来管理数据库,这里将以PhpMyAdmin为例来介绍如何执行SQL语句:
如果你想替换之前写过的所有文章中的某些内容,如更换博客的名称,更换博客的网址,更换文章配图的链接等等,你可以使用以下SQL语句:
UPDATE wp_posts SET post_content = REPLACE( post_content,'主机之家','主机之家测评');
该语句的功能是将所有文章中的 主机之家 字眼,全部替换成 主机之家测评,你可以根据需要做一些更改。因为文章内容在数据库中是以HTML代码形式存储的,所以以上SQL语句同样可以替换HTML代码。
如果你只是想更改文章插图的链接,而不想影响其他的链接,可以使用以下SQL语句,所有src=”oldurl.com被替换成了src=”newurl.com
UPDATE wp_posts SET post_content = REPLACE (post_content,'src="oldurl.com','src="newurl.com');
如果你是以图片附件形式上传的话,需要更改图片附件的GUID
UPDATE wp_postsSET guid = REPLACE (guid,'oldsiteurl.com', newsiteurl.com') WHERE post_type = 'attachment';
文章摘要就是你在WordPress后台编辑文章时,”摘要”框中输入的内容,如果你想批量更改文章摘要,可以使用以下语句:
UPDATE wp_posts SET post_excerpt = REPLACE( post_excerpt,'老刘博客','老刘博客主机测评');
该语句的功能是将所有文章摘要中的 主机之家 字眼,全部替换成 主机之家测评。
假设你的博客有两名注册用户,主机之家和主机之家测评,你想将主机之家的所有文章划归到主机之家测评名下,这时候该怎么办呢?你可以执行以下语句:
UPDATE wp_posts SET post_author = 主机之家用户id WHERE post_author = 主机之家测评用户id;
那如何获得 主机之家测评的用户id 和 主机之家的用户id 呢?你可以执行以下SQL语句:
SELECT ID, user_nicename, display_name FROM wp_users;
这时将列出你博客上所有的注册用户的ID,昵称和公开显示的名称,你现在就可以找到对应用户的ID了,主机之家的ID为2,主机之家测评的ID为5:
你的SQL就可以这样写了:
UPDATE wp_posts SET post_author =5 WHERE post_author =2;
假设,你的博客有个非常忠实的读者,给你的博客文章留下很多有用的评论,同时他的评论都填写了留言者的网站URL,但是有一天他的博客域名换了,并请求你更新他留言中的网站URL,那你怎么办?手动一个一个帮他改,这不太现实。你可以使用以下SQL语句:
UPDATE wp_posts SET post_author =5 WHERE post_author =2;
以上语句,将留言者所有旧的网站链接oldurl.com,更改为新的网址newurl.com
开启pingback功能,可以在别人引用你的文章链接的情况下,给你发送通知,但是该功能似乎对我们的文章没多大帮助,那为何不把pingback给禁止了呢?在WordPress后台 – 设置 – 讨论,取消勾选“接收来自外部博客的引用通告(pingbacks 和 trackbacks)”,这样以后的文章都不开启pingback,但是该选项不会对之前的已发布的文章起作用,还是要用到SQL:
UPDATE wp_posts SET ping_status ='closed';
在通常情况下,文章的修订版对大多数人来说没多大意义,而且修订版的数量会随着你修改文章的次数不断增长,这会增加数据库的查询速度,这并不是什么好事。互联网上有很多教你如何禁止修订版的文章,还有很多插件可以删除文章修订版,你可以自己搜索看看。这里教你如何使用SQL语句,删除所有已产生的文章修订版数据:
DELETE a,b,cFROM wp_posts aLEFT 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';
如果你的博客想要封杀某人,并删除其在你博客的所有留言,可以使用以下SQL语句。
DELETE FROM wp_comments WHERE comment_author_url LIKE '%www.example.com%';
DELETE FROM wp_comments WHERE comment_author ='example';
DELETE FROM wp_comments WHERE comment_author_email ='example@example.com';
国内的互联网监控力度表现出了不断加强的趋势,如果你的博客评论中出现了大量的敏感词汇,很可能离被墙也不远了。最好的做法是,替换相关的敏感词汇,以保证你的博客安全,以下SQL语句将所有评论中的 fuck,替换成 **,替换内容根据你的需要来。
UPDATE wp_comments SET comment_content = REPLACE( comment_content,'fuck','**');
有时候你的博客可能会因为某种原因,需要关闭文章的评论。在WordPress后台 – 设置 – 讨论,那里取消勾选“允许人们发表新文章的评论”,以后发表的文章默认是关闭评论的。但是之前已经发表的文章,若想关闭评论需要你一篇一篇地去修改评论设置,这是一件比较痛苦的事情。以下SQL语句可以帮助你轻松地批量关闭文章评论:
通常情况下,一篇旧文章就很少会有人发表评论了,一般访问旧文章的访客大都来自搜索引擎,这是好事,但是这部分访客还会提出一些新问题,尤其是技术问题,但是可能文章中提到的技术细节你已经淡忘,这时候会让你很难办。最好的做法还是还是禁用旧文章的评论,以下SQL将禁止2022-01-01之前发表的所有文章的评论,你可以根据需要修改日期:
UPDATE wp_posts SET comment_status ='closed' WHERE post_date < span>'2022-01-01' AND post_status ='publish';
有时候很不幸,在不可抗力的威胁下,你不得不关闭所有文章的评论,可以使用以下SQL语句:
UPDATE wp_posts SET comment_status ='closed' WHERE post_status ='publish';
免责声明:本站发布的内容(图片、视频和文字)以原创、来自本网站内容采集于网络互联网转载等其它媒体和分享为主,内容观点不代表本网站立场,如侵犯了原作者的版权,请告知一经查实,将立刻删除涉嫌侵权内容,联系我们QQ:712375056,同时欢迎投稿传递力量。
Copyright © 2009-2022 56dr.com. All Rights Reserved. 特网科技 特网云 版权所有 特网科技 粤ICP备16109289号
域名注册服务机构:阿里云计算有限公司(万网) 域名服务机构:烟台帝思普网络科技有限公司(DNSPod) CDN服务:阿里云计算有限公司 百度云 中国互联网举报中心 增值电信业务经营许可证B2
建议您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流浏览器浏览本网站