熟悉 WordPress 的人都知道 WordPress 是由 MySQL 数据库驱动的。 MySQL 是一个免费的关系数据库管理系统,大多数的主机托管服务商都有提供。 WordPress 所有数据如文章、评论、分类、设置等信息都是保存在 MySQl 数据库中。如果你想要了解更多关于 MySQL 的信息,可以访问 WordPress 的数据库模式。

举一个例子,如果你想在 WordPress 后台修改一些信息,查找每一个记录不仅耗时而且还很可能出错。而在 WordPress 数据库中通过简单地执行一个 SQL 查询就可以非常快速高效地做必要的修改。 下面就列出几个非常实用的 SQL 查询,对你实用 WordPress 将有非常大的帮助。

备份 WordPress 数据库

在执行任何修改之前,请先确保对数据库备份。要养成在做任何大的修改之前总是先备份下数据库的好习惯。这样一来,即使出现了什么错误,你还可以还原。
你可以下载 WP-DB-Backup 或 WP-DBManager 插件,通过 WordPress 管理面板来备份你的数据库。或者你也可以通过 phpMyAdmin 手动完成对你数据库备份。

如果你决定手动完成数据库备份,按照下面的操作步骤:

1 、登录到 phpMyAdmin

2 、选择 WordPress 数据库。

3 、点击导航顶部的输出

4 、选择你需要备份的表格,或者选择所有表格对整个数据库进行备份。

5 、选择 SQL 将输出的文件存为 .sql 的扩展名。

6 、勾选"另存为文件" 复选框。

7 、选择文件压缩类型,选择 gzipped 将数据库压缩。

8 、最后点击 「执行」 将会出现一个下载窗口提示你保存备份文件。

十三个 WordPress SQL 查询语句

执行下面这些查询最方便的方法是使用 phpMyAdmin 。 phpMyAdmin 是最常见的数据库编辑和查找工具。几乎所有的主机服务商的控制面板都有提供这个工具。或者你也可以使用 WordPress 插件 WordPress SQL Executioner 来执行 SQL 查询。

使用 phpMyAdmin 的话,其步骤如下:

  1. 登录 phpMyAdmin 面板选择 WordPress 数据库。
  2. 点击 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',%20'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 查询语句将会对你非常有帮助,提高你的工作效率。