熟悉WordPress的人都知道WordPress是由MySQL数据库驱动的。MySQL是一个免费的关系数据库管理系统,大多数的主机托管服务商都有提供。WordPress所有数据如文章、评论、分类、设置等信息都是保存在MySQl数据库中。如果你想要了解更多关于MySQL的信息,可以访问WordPress的数据库模式。
举一个例子,如果你想在WordPress后台修改一些信息,查找每一个记录不仅耗时而且还很可能出错。而在WordPress数据库中通过简单地执行一个SQL查询就可以非常快速高效地做必要的修改。 下面就列出几个非常实用的SQL查询,对你实用WordPress将有非常大的帮助。
备份WordPress数据库
在执行任何修改之前,请先确保对数据库备份。要养成在做任何大的修改之前总是先备份下数据库的好习惯。这样一来,即使出现了什么错误,你还可以还原。
你可以下载WP-DB-Backup 或WP-DBManager 插件,通过WordPress管理面板来备份你的数据库。或者你也可以通过phpMyAdmin手动完成对你数据库备份。
如果你决定手动完成数据库备份,按照下面的操作步骤:
- 登录到phpMyAdmin。
- 选择WordPress 数据库。
- 点击导航顶部的输出。
- 选择你需要备份的表格,或者选择所有表格对整个数据库进行备份。
- 选择SQL将输出的文件存为 .sql的扩展名。
- 勾选"另存为文件" 复选框。
- 选择文件压缩类型,选择gzipped将数据库压缩。
- 最后点击“执行”将会出现一个下载窗口提示你保存备份文件。
十三个WordPress SQL查询语句
执行下面这些查询最方便的方法是使用phpMyAdmin。phpMyAdmin是最常见的数据库编辑和查找工具。几乎所有的主机服务商的控制面板都有提供这个工具。或者你也可以使用WordPress 插件WordPress SQL Executioner 来执行SQL查询。
使用 phpMyAdmin的话,其步骤如下:
- 登录 phpMyAdmin 面板选择WordPress数据库。
- 点击SQL标签,这样你就进入了一个SQL查询框的页面。
看到如下图所示的SQL查询框之后,你就可以在里执行SQL查询。
注意: 所有的查询都是直接的SQL查询,并假设标准的表格前缀是'wp_' ,如果你使用其他的表格前缀,请相应地做修改。
1 变更Siteurl & Homeurl
WordPress将站点URL的绝对路径和本地URL保存在数据库中。因此,如果你将WordPress站点从本地主机转到你的服务器,你的站点不会加载网络,因为你的绝对路径URL仍然指向你的本地主机。你需要改变站点URL和本地URL,网站才能运作。
解决办法:
UPDATE wp_options SET option_value = replace(option_value, 'http://www.oldsiteurl.com', 'http://www.newsiteurl.com') WHERE option_name = 'home' OR option_name = 'siteurl';
2 变更 GUID
当你将博客从本地主机转移到你的服务器之后,或者从一个域名转到另一个新的域名,你需要在wp_posts表格修复GUID 字段的URL。因为如果输入错误,GUID可以将文章或者页面转到正确的文章绝对路径。
解决方案:
UPDATE wp_posts SET guid = REPLACE (guid, 'http://www.oldsiteurl.com', 'http://www.newsiteurl.com');
3 更改内容中的URL
WordPress保存在数据库中的URL链接使用绝对路径而非相对路径。在每个发布文章的记录中,它保存的是旧的URL引用旧的资源。因此,如果你需要将这些URL转的新的域名位置,就可以使用下面的方法。
解决方法:
UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://www.oldsiteurl.com', 'http://www.newsiteurl.com');
4 只改变图像路径
如果你使用亚马逊云计算服务CloudFront 作为内容交付网络 (CDN) 从服务器端卸载图片,在创建完CNAME记录后,你可以使用下面的查询语句来改变WordPress中的图形路径以下载所有的图形。
解决方法:
UPDATE wp_posts SET post_content = REPLACE (post_content, 'src="http://www.oldsiteurl.com', 'src="http://yourcdn.newsiteurl.com');
你还需要用下面的查询更新图片附件的GUID:
UPDATE wp_posts SET guid = REPLACE (guid, 'http://www.oldsiteurl.com', 'http://yourcdn.newsiteurl.com') WHERE post_type = 'attachment';
5 更新文章Meta标签
更新文章Meta标签的方法与更新文章内容中URL方法几乎一致。如果你给每篇文章保存了额外的URL数据,你可以使用下面的查询来更改。
解决办法
UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://www.oldsiteurl.com', 'http://www.newsiteurl.com');
6 更改默认的"Admin" 用户名
安装WordPress后,会默认创建一个 “admin” 的账户名。这一点只要有使用WordPress的用户都知道。不过,这可能会带来一个安全问题,因为黑客很容易侵入并控制你的WordPress管理面板。如果你可以对这个默认的 “Admin” 用户名进行修改将会提高WordPress管理面板的安全性。
解决方法:
UPDATE wp_users SET user_login = 'Your New Username' WHERE user_login = 'Admin';
7 重设密码
想重设WordPress的密码,但是却由于各种各样的原因却无法使用重设密码这个选项?
解决方法:
UPDATE wp_users SET user_pass = MD5( 'new_password' ) WHERE user_login = 'your-username';
8 将所有的B作者的文章归入A作者
如果你想将所有的B作者下的文章转移到A作者名下,一篇一篇移动起来将会非常耗时。使用下面的SQL查询,你可以轻松地访问所有的记录将B作者的文章转到A作者下。 首先你需要进入WordPress管理面板的作者和用户页面获得作者的ID。点击作者名查看个人资料,在地址栏,查找"user_id"。得到的就是我们需要的作者ID信息。
解决方法:
UPDATE wp_posts SET post_author = 'new-author-id' WHERE post_author = 'old-author-id';
9 删除草稿
在WordPress中编辑一篇文章时,系统会保存多份修订的副本。由于过多的修订记录会加重数据库的负担造成了资源的浪费。并且,随着时间的推移,当你的文章条目达到上千条是,你的数据库就会变得越来越庞大。这样就会增加了循环迭代、数据检索影响页面的加载时间。
解决方法:
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'
注意: 注意,此方法将删除所有的文章的所有修订版,包括相关的meta数据。
10 删除文章Meta标签
在WordPress的使用中,安装或删除插件是非常经常的。有些插件利用post meta 来存储插件相关的数据。就算你删除了这些插件,这些不必要的数据仍然保留在post_meta表格里。 你可以使用下面的语句来清除不需要的post meta 值。这将有助于加快你的数据库运行速度,减小数据。
解决方案:
DELETE FROM wp_postmeta WHERE meta_key = 'your-meta-key';
11 导出所有的评论邮件地址
经过一点时间,你的博客可能收到了非常多评论。这些评论里包含了评论者留下的邮件地址。你可以取回这些邮件地址列入你的邮件列表中。.
解决方法:
SELECT DISTINCT comment_author_email FROM wp_comments;
获得结果后,在查询结果的操作中,选择导出导出 所有的邮件。
12 删除所有的Pingback
热门文章会获得非常多的pingback。这样,你的数据库就变大,为了减小数据库,你可以尝试将所有这些pingbacks删除。
解决方法:
DELETE FROM wp_comments WHERE comment_type = 'pingback';
13 删除所有的垃圾评论
如果碰到非常多垃圾评论,一个个删除的话讲会非常头疼。而是用下面的SQL 查询,就算你要删除五百多条垃圾评论也变得轻而易举了。
解决方法:
DELETE FROM wp_comments WHERE comment_approved = 'spam';
- 0 = Comment Awaiting Moderation
- 1 = Approved Comment
- spam = Comment marked as Spam
14 确定未使用的标签
在WordPress数据库中,如果你使用一个查询语句手动来删除旧的文章,旧的标签却仍然会保留并在你的标签云/列表中出现。你可以使用下面的方法识别未使用的标签并将它删除。
解决方法:
SELECT * FROM wp_terms wt
INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id
INNER JOIN wp_term_relationships wtr ON wtr.term_taxonomy_id=wtt.term_taxonomy_id
LEFT JOIN wp_posts wp ON wp.ID=wtr.object_id
WHERE taxonomy='post_tag'
AND ID IS null
AND NOT EXISTS(SELECT * From wp_terms wt2
INNER JOIN wp_term_taxonomy wtt2 ON wt2.term_id=wtt2.term_id WHERE wtt2.parent=wt.term_id) ORDER BY name;
开始使用查询吧!
如果你要对WordPress网站做一些维护工作, 上面这些SQL查询语句将会对你非常有帮助,提高你的工作效率。
原文:13 Useful WordPress SQL Queries You Wish You Knew Earlier
分类:新闻资讯
标签:14, WordPress SQL, 使用技巧, 查询