我们在使用WordPress的过程中,少不了要对数据库进行修改操作,比如:更换域名、修改附件目录、批量修改文章内容、批量修改文章标题等等。这个时候,使用SQL查询语句可以大大简化我们的工作量。下面阿痕小编就分享一些WordPress常用的SQL查询语句希望能帮助各位小伙伴。
在进行任何数据库操作之前,一定要备份好原数据库,不然,一旦出错就“芭比Q”了。
下面的SQL查询语句,数据库都是使用WordPress默认的 wp_ 表头,请根据自己的实际修改。
1、批量修改文章标题
UPDATE wp_posts SET post_title = REPLACE(post_title,’阿痕’,’阿痕杂记’);
2、批量替换文章内容
UPDATE wp_posts SET post_content = REPLACE(post_content,’ahen.net’,’www.ahen.net’);
3、批量更改文章发布时间
UPDATE wp_posts set post_date = REPLACE(post_date,’-12′,’2050-11′) ;
4、批量发布定时发布失败或者设置为定时发布的文章
UPDATE wp_posts SET post_status = REPLACE( post_status,’future’, ‘publish’ );
5、将wordpress所有已发布文章,批量修改为草稿
UPDATE `wp_posts` SET `post_status` =’draft’ WHERE (`post_status`=’publish’);
这段代码其实是借鉴了网络上的一个将所有待审核文章修改为发布状态,代码如下:
UPDATE `wp_posts` SET `post_status` =’publish’ WHERE (`post_status`=’pending’);
大家仔细对比一下代码内容,可以发现一些要素:草稿’draft’,已发布’publish’,待审核’pending’。通过这几个组合可以自由变换文章的发布状态。
1、pending:待审
2、draft:草稿
3、auto-draft:自动保存的草稿
4、inherit:修订版本
5、trash:回收站
6、publish:已发布
7、future:定时
8、private:私有
6、将一个时间段的文章全部移动到草稿里
UPDATE `wp_posts` SET `post_status` =’draft’ WHERE `post_date` >=’-12-01 00:00:00′ and `post_date` < ‘-12-22 22:00:00:00’;
7、更改文章插图的链接,而不想影响其他的链接,可以使用以下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_posts
SET guid = REPLACE (guid, ‘oldsiteurl.com’, ‘newsiteurl.com’)
WHERE post_type = ‘attachment’;
8、批量修改文章摘要
UPDATE wp_posts
SET post_excerpt = replace( post_excerpt, ‘阿痕网’, ‘阿痕杂记’ );
9、批量修改文章的作者
假设你的博客有两名注册用户,隔壁老王和王叔叔,你想将王叔叔的所有文章划归到隔壁老王名下,这时候该怎么办呢?你可以执行以下语句:
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了
10、批量修改文章评论者的网站URL
UPDATE wp_comments
SET comment_author_url =
REPLACE( comment_author_url, ‘oldurl.com’, ‘newurl.com’ )
11、删除所有文章的修订版
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’;
12、替换所有评论中的敏感词汇
UPDATE wp_comments
SET comment_content = replace( comment_content, ‘fuck’, ‘**’ );
13、关闭文章评论功能
有时候你的博客可能会因为某种原因,需要关闭文章的评论。在WordPress后台 – 设置 – 讨论,那里取消勾选”允许人们发表新文章的评论”,以后发表的文章默认是关闭评论的。但是之前已经发表的文章,若想关闭评论需要你一篇一篇地去修改评论设置,这是一件比较痛苦的事情。以下SQL语句可以帮助你轻松地批量关闭文章评论:
(1) 关闭所有旧文章的评论:
通常情况下,一篇旧文章就很少会有人发表评论了,一般访问旧文章的访客大都来自搜索引擎,这是好事,但是这部分访客还会提出一些新问题,尤其是技术问题,但是可能文章中提到的技术细节你已经淡忘,这时候会让你很难办。最好的做法还是还是禁用旧文章的评论,以下SQL将禁止-01-01之前发表的所有文章的评论,你可以根据需要修改日期:
UPDATE wp_posts
SET comment_status = ‘closed’
WHERE post_date < ‘-01-01’ AND post_status = ‘publish’;
(2) 关闭所有文章的评论:
有时候很不幸,在不可抗力的威胁下,你不得不关闭所有文章的评论,可以使用以下SQL语句:
UPDATE wp_posts
SET comment_status = ‘closed’ WHERE post_status = ‘publish’;
14、删除所有未使用的标签
DELETE a,b,c
FROM wp_terms AS a
LEFT JOIN wp_term_taxonomy AS c ON a.term_id = c.term_id
LEFT JOIN wp_term_relationships AS b ON b.term_taxonomy_id = c.term_taxonomy_id
WHERE c.taxonomy = ‘post_tag’ AND c.count = 0
15、更改WordPress地址和首页地址
UPDATE wp_options
SET option_value = replace(option_value, ‘http://www.旧网址.com’, ‘http://www.新网址.com’)
WHERE option_name = ‘home’ OR option_name = ‘siteurl’
16、更改文章的GUID
UPDATE wp_posts
SET guid = REPLACE (guid, ‘http://www.旧网址.com’, ‘http://www.新网址.com’)
17、更新文章的Meta值
UPDATE wp_postmeta
SET meta_value = REPLACE (meta_value, ‘http://www.旧网址.com’, ‘http://www.新网址.com’)
18、WordPress重设admin密码
UPDATE wp_users
SET user_pass = MD5( ‘new_password’ )
WHERE user_login = ‘admin’
19、WordPress重设admin的用户名
UPDATE wp_users
SET user_login = ‘newname’
WHERE user_login = ‘admin’
20、删除文章的meta标签
DELETE FROM wp_postmeta
WHERE meta_key = ‘your-meta-key’
21、导出所有评论中的邮件地址
SELECT DISTINCT comment_author_email
FROM wp_comments
22、删除所有的Pingback
DELETE FROM wp_comments
WHERE comment_type = ‘pingback’
23、删除所有的垃圾评论
DELETE FROM wp_comments
WHERE comment_approved = ‘spam’
24、禁用所有激活的插件
UPDATE wp_options
SET option_value = ”
WHERE option_name = ‘active_plugins’
25、罗列所有未使用的Meta标签
SELECT *
FROM wp_postmeta pm
LEFT JOIN wp_posts wp ON wp.ID = pm.post_id
WHERE wp.ID IS NULL
26、更新正文内所有的’target=”_blank”‘为’rel=”nofollow”‘
UPDATE wp_posts
SET post_content = REPLACE (post_content, ‘target=”_blank’, ‘rel=”nofollow’)
27、删除未使用的Meta标签
DELETE pm
FROM wp_postmeta pm
LEFT JOIN wp_posts wp ON wp.ID = pm.post_id
WHERE wp.ID IS NULL
28、更改文章自定义字段的名称
UPDATE `wp_postmeta` SET `meta_key` = ‘新名称’ WHERE `meta_key` = ‘旧名称’;