大多数使用 WordPress 搭建的网站,其后台都是 MySQL 数据库,经常我们需要定制 WordPress 的功能,这里我们列表 10 个最有用的 WordPress 的数据库查询,你需要一个数据库的管理工具,例如 phpMyAdmin 或者 Navicat 等来执行这些 SQL 语句。
1. 将所有文件的作者改为另外一个用户
在修改之前,你先要知道两个不同用户的 ID,你可以在 WP 后台的 Author & User 页面中找到这个 ID,或者在查看用户信息时点击用户名的链接,地址栏中出现的 user_id 对应的值就是用户ID,然后运行以下命令进行修改:
UPDATE wp_posts SET post_author = 'new-author-id' WHERE post_author = 'old-author-id';
2. 修改默认管理员 admin 的名称
WP 默认安装会创建一个名为 admin 的管理员帐号,你可以修改这个帐号的名称:
UPDATE wp_users SET user_login = 'Your New Username' WHERE user_login = 'Admin';
3. 删除修订版 Revision
文章修订版浪费了大量的存储资源,当你有数以千计的文章时,这个数值更加惊人,这会影响程序执行的性能、数据获取,降低页面加载时间,解决的办法就是删除这些无用的修订版信息:
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'
4. 更改 GUID
在进行博客移植时,你需要修复 wp_posts 表中的 URL 里的 GUID 信息,这是非常关键的,因为 GUID 用于将 URL 路径与文章信息对应起来:
UPDATE wp_posts SET guid = REPLACE (guid, '.oldsiteurl','iteurl');
5. 更改 Siteurl & Homeurl
当你将网站从本地移到真正的服务器,网站并无法使用,因为完整的路径依然指向 localhost,你需要修改网站的 URL 和首页 URL:
UPDATE wp_options SET option_value = replace(option_value,'.oldsiteurl', 'iteurl') WHERE option_name ='home' OR option_name = 'siteurl';
6. 删除 Pingback 数据
受欢迎的文章会收到大量的 pingback 信息,这会让数据库的体积庞大,可以使用下面 SQL 语句删除:
DELETE FROM wp_comments WHERE comment_type = 'pingback';
7. 更改图片路径
如果你使用 CDN 来处理图片访问,在创建完 CNAME 记录后,你可通过下面查询来修改所有图像的路径:
UPDATE wp_posts SET post_content = REPLACE (post_content,'src=".oldsiteurl', 'src="http://yourcdniteurl');
你还需要通过下面语句来修改图片附件的 GUID 信息:
UPDATE wp_posts SET guid = REPLACE (guid, '.oldsiteurl','http://yourcdniteurl') WHERE post_type = 'attachment';
8. 标出无用的标签
删除文章时并不会保证删除对应的标签,你必须手工来做这个事情,下面这个查询可让你找出那些没有用到的标签:
SELECT * From wp_terms wt
INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHEREwttonomy='post_tag' AND wtt.count=0;
9. 重置密码
如果想重置登录密码,如果嫌麻烦可直接用下面的 SQL 语句来完成:
UPDATE wp_users SET user_pass = MD5( 'new_password' ) WHERE user_login = 'your-username';
10. 更新文章元数据
如果你的每篇文章都保持了特别的 URL ,可使用下面语句来处理:
UPDATE wp_postmeta SET meta_value = REPLACE (meta_value,'.oldsiteurl','iteurl');
在做任何修改之前,我们建议你对数据库做好备份后再操作。