8条实用的WordPress SQL技巧
在过去10年中,MySQL数据库难以置信的受到欢迎.每一个WordPress博客都使用MySQL数据库,里面包含了博客的文章,设置和更多的内容.
虽然插件和code hack可以解决很多问题和完成一些任务,但有时候你除了直接执行SQL命令或运行phpmyadmin工具并无其他选择,本文通过1提问,2提出解决方法,3方法解释来向你说明这些技巧.
1.备份你的数据库

问题:有备而无患,避免数据库出现问题导致严重的后果.
方法:要手动备份你的WP数据库,请参照下面的步骤:
- 登陆到phpmyadmin,选择你的wordpress数据库.
- 一旦完成,点击菜单上的导出按钮.
- 选择压缩方法(建议选择gzip),点击执行按钮.
- 浏览器会提示是否储存备份,选择是,将备份好的数据库文件保存到本地硬盘上.
解释:使用WP-DB-Backup或者WP-DBManager插件能够轻松创建wordpress博客的数据库备份,并支持自动备份等功能,建议安装.
2.批量删除文章修订(Post Revisions)

问题:文章修订(Revisions)是2.6版本开始引入的一个新功能,很有用处.但同时,它也会使数据库的容量大增.你也可以手动将之删除,但这是一个非常漫长而枯燥的工作.
方法:解决的方法其实挺简单,只需要用一条批处理的sql命令.而结果可能十分难以置信,你的数据库容量将减少一半.
- 登陆到phpmyadmin,选择你的wordpress数据库.
- 点击”sql”按钮,粘贴如下的代码:
DELETE FROM wp_posts WHERE post_type = “revision”;
- 大功告成,你将节约出好多数据库空间.
解释:wp_posts表有一栏名为post_type,它可以有很多值,比如”post”,”page”或者”revision”.所以当我们要删除文章修订的时候,只需要执行一条删除post_type的值为revision的命令即可.另外,你还可以使用Delete-Revision插件快速删除revision.
3.删除垃圾评论,弹指一挥间

问题:某一天,如果你的评论审核列表中唰的一下出现了数不清的留言,这里面当然有你的读者的回复,但大多数都肯定是spam,这时候你该怎么办呢?
方法:
- 登陆到phpmyadmin,选择你的wordpress数据库.
- 点击”sql”按钮,粘贴如下的代码:
DELETE from wp_comments WHERE comment_approved = ‘0′;
- 垃圾全部删除,世界一下子变得清净了
解释:wp_comments表中有一栏叫做comment_approved,值有0或者1.审核通过后的评论值为1,而未通过的为0.所以通过运行上面的代码,将从未通过审核的评论全部清除.但是需要注意的是,这样做会删除掉审核队列中有用的评论.如果你还没有安装任何防垃圾插件,强烈建议你使用Akismet.
4.更改文章归属

问题:管理帐户在安装WordPress时就已创建,但许多博主把这个帐户误以为就是写日志的账户,以致到后来才发现这不是私人帐号.
方法:更改所有日志的作者属性要花费很多时间,但使用SQL就不用这么麻烦了.
- 登陆到phpmyadmin,选择你的wordpress数据库.
- 首先,打开SQL语句窗口,执行以下命令以获取正确的作者ID
SELECT ID, display_name FROM wp_users;
- phpMyAdmin会显示许多WordPress用户的ID.其中NEW_AUTHOR_ID是最近写日志的作者的ID,OLD_AUTHOR_ID是原始管理员的ID.
- 交换NEW_AUTHOR_ID和OLD_AUTHOR_ID ID后,运行以下语句:
UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;
- 完成,以前的日志属性现在全部已更改为你刚刚设置的了.
5.手动重设密码

问题:为了博客的安全性考虑,你当然需要设置一个超安全的密码.但是,偶有些博主竟然也会把自己的密码都弄丢.
方法:密码丢失后,WordPress会给你邮箱发送密码重设链接.但如果你在注册时使用的邮箱现已不可用,或你想使用简单语句执行这个操作的话,可参考以下步骤:
- 登陆到phpmyadmin,选择你的wordpress数据库.
- 输入以下语句(假设你的用户名是”admin”):
UPDATE ‘wp_users’ SET ‘user_pass’ = MD5(’PASSWORD’) WHERE ‘wp_users’.'user_login’ =’admin’ LIMIT 1;
- 密码更改成功.
解释:用户密码存储在wp_users表格中.当然,WordPress使用了md5 hash来保护密码.我们要使用’UPDATE’ SQL语句和内置的MD5() MySQL函数来把密码转化为MD5算法形式,然后更新.”WHERE”从句使系统只更新管理员的密码.不带有”WHERE”从句会导致系统更新所有的密码.
6.更改域名

问题:虽然我们并不主张这样做,但也许有时你需要在保留博客和数据的同时改变博客的域名.由于WordPress把域名存储在数据库中,所以为了把新域名和博客连接起来,你必须更改数据库.
方法:
- 登陆到phpmyadmin,选择你的wordpress数据库.
- 点击”SQL”,打开SQL命令窗口,输入以下命令更改URL:
UPDATE wp_options SET option_value = replace(option_value, ‘http://www.oldsite.com’, ‘http://www.newsite.com’) WHERE option_name = ‘home’ OR option_name = ’siteurl’;
- 使用以下语句替代所有日志的相对URL(guid全局唯一标识符):
UPDATE wp_posts SET guid = replace(guid, ‘http://www.oldsite.com’,'http://www.newsite.com’);
- 搜索wp_posts表并替代其中的URL,以确保没有老的URL存在了:
UPDATE wp_posts SET post_content = replace(post_content, ‘http://www.oldsite.com’, ‘http://www.newsite.com’);
- 完成,现在可以使用新URL登陆WordPress控制台了.
解释:为了更快地更改WordPress域名,我选择使用超级有用的MySQL函数”replace,”,这会完全替代所有需要替代的内容.需要更进一步替换的话,请参看wordpress修改域名策略.
7.显示SQL查询数量

问题:了解输入到数据库的查询数量对优化博客载入时间非常重要.为了减少查询,我们首先要知道单个页面的查询数量.
方法:
- 打开footer.php,添加以下代码:
<?php if (is_user_logged_in()) { ?>
<?php echo get_num_queries(); ?> queries in <?php timer_stop(1); ?> seconds.
<?php } ?> - 保存文件,然后访问博客.在页脚系统已经显示WordPress数据库的查询数目,及查询所用时间.
解释:许多用户似乎都不了解这个功能.get_num_queries()函数会显示页面载入时执行的查询数目.以上代码只会对注册用户显示查询数目,因为访客和搜索引擎并不需要知道这些内容.但如果你想公开的话,直接删除if (is_user_logged_in())这个条件语句就可以了.
8.还原数据库

问题:如果修改或升级过程或其它原因造成了博客数据的丢失或损坏,希望你有备份的数据库.这样,你可以把备份的数据库导入到数据库中以弥补损失.
方法:
- 登陆到phpmyadmin,选择你的wordpress数据库.
- 点击菜单上的”导入”按钮.
- 点击”浏览”,选择硬盘上最新备份的数据库.
- 单击”执行”.如果一切正常的话,你的数据库现在已在运行了!
原文:8 Useful WordPress SQL Hacks by SmashingMagazine.
Tags: hacks, phpMyAdmin, SQL, Wordpress









Leave a Reply