A A
Kusanagi Studio

8条实用的WordPress SQL技巧

Fri, Jan 9, 2009

Featured, Wordpress

  在过去10年中,MySQL数据库难以置信的受到欢迎.每一个WordPress博客都使用MySQL数据库,里面包含了博客的文章,设置和更多的内容.

  虽然插件和code hack可以解决很多问题和完成一些任务,但有时候你除了直接执行SQL命令或运行phpmyadmin工具并无其他选择,本文通过1提问,2提出解决方法,3方法解释来向你说明这些技巧.

1.备份你的数据库

Creating a Backup of Your Database

  问题:有备而无患,避免数据库出现问题导致严重的后果.

  方法:要手动备份你的WP数据库,请参照下面的步骤:

  1. 登陆到phpmyadmin,选择你的wordpress数据库.
  2. 一旦完成,点击菜单上的导出按钮.
  3. 选择压缩方法(建议选择gzip),点击执行按钮.
  4. 浏览器会提示是否储存备份,选择是,将备份好的数据库文件保存到本地硬盘上.

  解释:使用WP-DB-Backup或者WP-DBManager插件能够轻松创建wordpress博客的数据库备份,并支持自动备份等功能,建议安装.

2.批量删除文章修订(Post Revisions)

Batch Delete Post Revisions

  问题:文章修订(Revisions)是2.6版本开始引入的一个新功能,很有用处.但同时,它也会使数据库的容量大增.你也可以手动将之删除,但这是一个非常漫长而枯燥的工作.

  方法:解决的方法其实挺简单,只需要用一条批处理的sql命令.而结果可能十分难以置信,你的数据库容量将减少一半.

  1. 登陆到phpmyadmin,选择你的wordpress数据库.
  2. 点击”sql”按钮,粘贴如下的代码:
    DELETE FROM wp_posts WHERE post_type = “revision”;
  3. 大功告成,你将节约出好多数据库空间.

  解释:wp_posts表有一栏名为post_type,它可以有很多值,比如”post”,”page”或者”revision”.所以当我们要删除文章修订的时候,只需要执行一条删除post_type的值为revision的命令即可.另外,你还可以使用Delete-Revision插件快速删除revision.

3.删除垃圾评论,弹指一挥间

Erase Spam Comments

  问题:某一天,如果你的评论审核列表中唰的一下出现了数不清的留言,这里面当然有你的读者的回复,但大多数都肯定是spam,这时候你该怎么办呢?

  方法:

  1. 登陆到phpmyadmin,选择你的wordpress数据库.
  2. 点击”sql”按钮,粘贴如下的代码:
    DELETE from wp_comments WHERE comment_approved = ‘0′;
  3. 垃圾全部删除,世界一下子变得清净了

  解释:wp_comments表中有一栏叫做comment_approved,值有0或者1.审核通过后的评论值为1,而未通过的为0.所以通过运行上面的代码,将从未通过审核的评论全部清除.但是需要注意的是,这样做会删除掉审核队列中有用的评论.如果你还没有安装任何防垃圾插件,强烈建议你使用Akismet.

4.更改文章归属

Change the Post Attribution

  问题:管理帐户在安装WordPress时就已创建,但许多博主把这个帐户误以为就是写日志的账户,以致到后来才发现这不是私人帐号.

  方法:更改所有日志的作者属性要花费很多时间,但使用SQL就不用这么麻烦了.

  1. 登陆到phpmyadmin,选择你的wordpress数据库.
  2. 首先,打开SQL语句窗口,执行以下命令以获取正确的作者ID
    SELECT ID, display_name FROM wp_users;
  3. phpMyAdmin会显示许多WordPress用户的ID.其中NEW_AUTHOR_ID是最近写日志的作者的ID,OLD_AUTHOR_ID是原始管理员的ID.
  4. 交换NEW_AUTHOR_ID和OLD_AUTHOR_ID ID后,运行以下语句:
    UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;
  5. 完成,以前的日志属性现在全部已更改为你刚刚设置的了.

5.手动重设密码

Manually Reset Your Password

  问题:为了博客的安全性考虑,你当然需要设置一个超安全的密码.但是,偶有些博主竟然也会把自己的密码都弄丢.

  方法:密码丢失后,WordPress会给你邮箱发送密码重设链接.但如果你在注册时使用的邮箱现已不可用,或你想使用简单语句执行这个操作的话,可参考以下步骤:

  1. 登陆到phpmyadmin,选择你的wordpress数据库.
  2. 输入以下语句(假设你的用户名是”admin”):
    UPDATE ‘wp_users’ SET ‘user_pass’ = MD5(’PASSWORD’) WHERE ‘wp_users’.'user_login’ =’admin’ LIMIT 1;
  3. 密码更改成功.

  解释:用户密码存储在wp_users表格中.当然,WordPress使用了md5 hash来保护密码.我们要使用’UPDATE’ SQL语句和内置的MD5() MySQL函数来把密码转化为MD5算法形式,然后更新.”WHERE”从句使系统只更新管理员的密码.不带有”WHERE”从句会导致系统更新所有的密码.

6.更改域名

Change Your WordPress Domain Name

  问题:虽然我们并不主张这样做,但也许有时你需要在保留博客和数据的同时改变博客的域名.由于WordPress把域名存储在数据库中,所以为了把新域名和博客连接起来,你必须更改数据库.

  方法:

  1. 登陆到phpmyadmin,选择你的wordpress数据库.
  2. 点击”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’;
  3. 使用以下语句替代所有日志的相对URL(guid全局唯一标识符):
    UPDATE wp_posts SET guid = replace(guid, ‘http://www.oldsite.com’,'http://www.newsite.com’);
  4. 搜索wp_posts表并替代其中的URL,以确保没有老的URL存在了:
    UPDATE wp_posts SET post_content = replace(post_content, ‘http://www.oldsite.com’, ‘http://www.newsite.com’);
  5. 完成,现在可以使用新URL登陆WordPress控制台了.

  解释:为了更快地更改WordPress域名,我选择使用超级有用的MySQL函数”replace,”,这会完全替代所有需要替代的内容.需要更进一步替换的话,请参看wordpress修改域名策略.

7.显示SQL查询数量

显示SQL查询数量

  问题:了解输入到数据库的查询数量对优化博客载入时间非常重要.为了减少查询,我们首先要知道单个页面的查询数量.

  方法:

  1. 打开footer.php,添加以下代码:
    <?php if (is_user_logged_in()) { ?>
    <?php echo get_num_queries(); ?> queries in <?php timer_stop(1); ?> seconds.
    <?php } ?>
  2. 保存文件,然后访问博客.在页脚系统已经显示WordPress数据库的查询数目,及查询所用时间.

  解释:许多用户似乎都不了解这个功能.get_num_queries()函数会显示页面载入时执行的查询数目.以上代码只会对注册用户显示查询数目,因为访客和搜索引擎并不需要知道这些内容.但如果你想公开的话,直接删除if (is_user_logged_in())这个条件语句就可以了.

8.还原数据库

还原数据库

  问题:如果修改或升级过程或其它原因造成了博客数据的丢失或损坏,希望你有备份的数据库.这样,你可以把备份的数据库导入到数据库中以弥补损失.

  方法:

  1. 登陆到phpmyadmin,选择你的wordpress数据库.
  2. 点击菜单上的”导入”按钮.
  3. 点击”浏览”,选择硬盘上最新备份的数据库.
  4. 单击”执行”.如果一切正常的话,你的数据库现在已在运行了!

原文:8 Useful WordPress SQL Hacks by SmashingMagazine.

Tags: hacks, phpMyAdmin, SQL, Wordpress

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Lifestream
twitter (feed #7)
耍了一天dota,累…… [#]
9:12pm via Twitter
delicious (feed #3)
11:13am via Delicious
delicious (feed #3)
3:18pm via Delicious
flickr (feed #4)
11:35pm via Flickr
仙剑奇侠传三 电视剧
twitter (feed #7)
刚刚和拳圣联了PSP的山脊2和kof02,都以我华丽的胜利而告终,啊哈哈哈哈~ [#]
6:38pm via Twitter
xboxlive (feed #8)
8:58pm via Friend 詹宇亮
delicious (feed #3)
1:46pm via Delicious
flickr (feed #4)
11:56pm via Flickr
核物理 T-shirt
twitter (feed #7)
感言:joomla完全不适合搭建个人博客,有好好的Wordpress不用,非要乱折腾,像我这种Man已病入膏肓,无可救药…… [#]
7:19pm via Twitter
delicious (feed #3)
8:22am via Delicious
twitter (feed #7)
CF 5.03GEN-A for HEN will be release within several hours, hahahahahahahahaha~ [#]
8:18pm via Twitter