虽然通过 WordPress 强大的插件库,你几乎可以干任何的事情,但是有时候需要快速修复一些特定的问题的时候,直接操作数据库可能反而是方便的方法,所以这篇文章就给大家介绍 WordPress 数据库维护时常用到 12 个 SQL 语句。
*注:下面假设 WordPress 数据库的表的前缀都是默认的“wp_”。
1. 直接在数据库中修改密码
密码忘记了是经常的事情,博客密码忘记了进不去,可以直接在数据库里面修改:
代码语言:javascript复制UPDATE wp_users SET user_pass = MD5('PASSWORD') WHERE user_login = 'admin'
上面采用了 MySQL 的 MD5()
函数讲密码转成 MD5 Hash。
2. 将日志从一个作者转移到另外一个
假如你的博客的某个作者离开了,或者你不想让“admin”作为作者名,想把日志的作者从一个改到另外一个:
代码语言:javascript复制UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;
*注:你需要知道两个作者的 user id。
3. 删除数据库中日志修订记录和其相关的 post_meta 数据
特别是针对多人博客的时候,日志修订功能很重要,但是日志修订功能也在数据库里面添加了很多的数据,假设你的博客只有 100 篇日志,每篇日志有 10 个日志修订,你的 posts 表中就会有超过 1000 条记录,严重的数据冗余:
代码语言:javascript复制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'
*注:上面的 SQL 将删除数据库中所有的日志修订记录和其相关的 meta 信息(自定义字段)。
当然你还可以:彻底屏蔽日志修订功能。
4. 批量删除垃圾留言
如果你一段时间没有管理你的博客,刚好出去休假,没有办法上网,并且博客也没有装类似 Akismet 这类防垃圾留言插件,那么你回来的时候,你会发现博客后台有成千上万条垃圾留言需要你去审核。
这个时候,其实你只需要审核通过正常的留言,然后执行下面这条 SQL:
代码语言:javascript复制DELETE FROM wp_comments WHERE comment_approved = '0';
5. 查找没用的标签
你可能创建一些 WordPress 标签之后,就没有再使用,你可以通过下面这条 SQL 找到它们,然后安全的删除他们。
代码语言:javascript复制SELECT * From wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count=0;
6. 查找和替换数据
对于熟悉 MySQL 数据库的开发者来说,replace() 这个 MySQL 函数都应该很熟悉,它可以让你指定一个字段,然后替换它里面的字符串,一旦执行,所有这个字段里面的字符串都会被替换。对于 WordPress 博客来说,这个 SQL 则非常实用,它可以让你批量修改某些输入错误,或者某个邮件地址等等。
代码语言:javascript复制UPDATE table_name SET field_name = replace( field_name, 'string_to_find', 'string_to_replace' ) ;
替换日志内容中字符串:
代码语言:javascript复制UPDATE wp_posts SET post_content = replace( post_content, 'string_to_find', 'string_to_replace' ) ;
将某个留言者地址替换下:
代码语言:javascript复制UPDATE wp_comments SET comment_author_url = REPLACE( comment_author_url, 'http://oldurl.com', 'http://newurl.com' );
留言者邮箱:
代码语言:javascript复制UPDATE wp_comments SET comment_author_email = REPLACE( comment_author_email, 'old-email@address.com', 'new-email@address.com' );
还有一个 WordPress 插件 Search & Replace 还提供一个后台让你更加容易进行批量替换。
7. 获取所有留言者的邮件地址
有时候你想做点不是那么好的事情,比如给所有留言者发下邮件,告诉他们你博客做了一些新的功能,或者写了一个很不错的文章,那么你干坏事情之前,首先要获取所有留言者的邮件地址:
代码语言:javascript复制SELECT DISTINCT comment_author_email FROM wp_comments;
*注:上面的 DISTINCT 让你获取的邮件地址是唯一的,即使这个用户发过好几次留言,也不怕。
不过群发邮件这件事情个人建议还是不要这样做好。