1. 您的位置:首页 > seo技术 >内容

27个适用于WordPress的便捷SQL查询技巧

如果您已经管理WordPress网站已有一段时间,那么您可能知道此内容管理平台使用MySQL数据库来存储显示页面和应用所选设置所需的所有信息。

WordPress和MySQL建立了良好的合作关系; 两者都是免费的,使用WordPress意味着源源不断的新插件和功能使生活更轻松。 但是,只要您知道如何从MySQL方面进行工作,就可以通过phpMyAdmin来管理站点,甚至在某些情况下甚至可以更好。 当然,那只是对WordPress依赖的数据库运行查询的问题。

知道MySQL来构建WordPress网站不是必需的,但是知道如何运行一些有用的查询来省却您的头痛绝对是一个优势。

如何管理您的WordPress数据库

如果您熟悉phpMyAdmin和SQL(结构化查询语言),请跳过,但是如果这是新的:

如果您不知道在何处访问它,可以在托管cPanel上找到phpMyAdmin。 控制台打开后,从左侧列表中选择您的站点数据库。 如果未更改名称,它应反映设置WordPress网站时给您的域或用户名,后缀“ _wp”。 建议您此时不要使用information_schema数据库。

如果您看到多个数据库,但找不到正确的数据库,则一次选择一个,然后每次单击“ SQL”选项卡打开一个新的查询窗口。 输入:

 SELECT * from wp_options

检查名为option_value的列下的条目。 您应该在最上面的几行中识别出您的siteurl,博客名称和其他信息。 如果您有正确的信息,则您具有正确的数据库。 在执行其他任何操作之前,请随时浏览表和列名称,以了解此处的内容。 您必须选择一个数据库(并因此选择它的表)才能对它运行查询。 如果要查看每个表中的内容,请使用上面的SELECT *查询,将wp_options换成要浏览的任何表名。 只是不要更改任何值。

第一步:备份数据库

WordPress需要数据库中的信息来重新创建您创建的每个最新帖子,评论和设置。 无论您对SQL的熟练程度如何,请记住,一次输入错误或单击错误都可能破坏破坏数据库的信息,以致站点根本无法加载。 任何类型的UPDATE或DELETE查询都可能意味着丢失关键站点或内容信息。 在开始修改数据之前备份数据库意味着您可以始终将其恢复原状。

您可以从管理仪表板下载WP-DB-Backup或WP-DBManager之类的插件来帮助您完成此任务,但也可以在开始之前直接从phpMyAdmin中进行操作。 最快最简单的方法:

1.登录到phpMyAdmin。
2.选择您的WordPress数据库。
3.单击窗口顶部的导出。
4.在“格式”下拉列表中,选择“ SQL”以导出为.sql文件。 它应该是默认选择。
5.单击“执行”,然后将下载数据库的副本。

如果需要,可以单击“自定义”按钮以获得其他选项。

或者,您可以转到“操作”选项卡,在“将数据库**到”框中输入文件路径,选择选项,然后单击“转到”。

恢复MySQL数据库的备份

1.要还原数据库,请单击导入选项卡。
2.将FORMAT保留为SQL或将其更改为使用的任何格式
3.浏览到保存数据库备份的位置。
4.单击执行。

请注意,phpMyAdmin确实有一些文件大小限制,因此,如果数据库变得非常大,则必须使用下面的某些查询来修剪它,或者尝试使用另一种方法,例如插件之一。 上传大小通常为2MB,这些是要查找的设置:

post_max_size = 8M
upload_max_filesize = 2M

请注意,post_max_size必须大于或等于upload_max_filesize。
这些设置可能会在服务器上全局设置,具体取决于您的安装,并且您无法更改它们。 如果没有,您可以在您的php .ini文件中找到它们。

在Apache安装上,您可以通过在phpMyAdmin的目录中放置一个“ .htaccess”文件来本地更改这些设置。 该文件的内容应为:

php_value post_max_size 20M
php_value upload_max_filesize 20M

将“ 20M”更改为想要文件限制的大小。 如果出现内部服务器错误(500),则可能意味着您的主机不允许您更改这些设置,因此需要删除此文件。

如果您受文件大小的限制,则只需选择“自定义”复选框并为每个备份文件而不是整个数据库选择单个表,然后一次还原一个即可进行多个文件备份。

WordPress用户的SQL技巧

既然这样,您可以在同一查询框中运行一些示例查询,这将有助于管理WordPress和MySQL数据库:

1.更改您的网址

WordPress存储您的站点URL和家庭URL的绝对路径。 如果将站点转移到其他服务器或域,则在URL不更新的情况下不会加载。 您可以通过运行以下命令来执行此操作:

 更新wp_options SET option_value = replace(option_value,'http://www.myoldurl.com','http://www.mynewurl.com')WHERE option_name ='home'或option_name ='siteurl';

2.更新GUID(全局唯一标识符)

如果您已将博客站点从计算机上载到新服务器或新域,则还应更新GUID字段的URL,因为这是用于将发布内容转换为绝对路径的。

 更新wp_posts SET guid = REPLACE(guid,'http://www.myoldurl.com','http://www.mynewurl.com');

3.更新内容中的URL

在每个帖子数据的内容中,MySQL存储引用旧资源的旧URL。 您需要将它们更改为新域。

 更新wp_posts SET post_content = REPLACE(post_content,'http://www.myoldurl.com','http://www.mynewurl.com');

4.更新映像路径

您可能听说过将Amazon CloudFront用作内容交付网络(CDN)来卸载图像交付。 创建CNAME记录后,请使用以下查询更新WordPress中的图像路径以从Amazon CloudFront加载。

 更新wp_posts SET post_content = REPLACE(post_content,'src =“ http://www.myoldurl.com','src =” http://yourcdn.mynewurl.com');

您还需要更新用于图像附件的GUID:

 更新wp_posts SET guid = REPLACE(guid,'http://www.myoldurl.com','http://yourcdn.mynewurl.com')WHERE post_type ='attachment';

5.在帖子中添加一个新字段

此查询将自定义字段添加到您网站上的每个帖子。 您可以将新字段命名为任意名称,以便以后通过将“ MyNewCustomFieldValue”更改为所需名称(该名称必须不存在)轻松地进行识别。

 插入到wp_postmeta(post_id,meta_key,meta_value)
SELECT ID AS post_id,“ UniversalCustomField”
AS meta_key'MyNewCustomFieldValue AS meta_value
来自wp_posts不在其中的ID
(从wp_postmeta WHERE meta_key ='UniversalCustomField'中选择post_id)
''AND post_type ='post';

以下操作将对您网站上的所有页面执行相同的操作:

 插入到wp_postmeta(post_id,meta_key,meta_value)
SELECT ID AS post_id,“ UniversalCustomField”
AS meta_key'MyCustomFieldValue AS meta_value
来自wp_posts不在其中的ID
(从wp_postmeta WHERE meta_key ='UniversalCustomField'中选择post_id)
AND'post_type'='页面';

6.查找所有具有字段名称的帖子

如果您需要使用创建的新字段(或任何现有字段)查找所有帖子,则可以使用以下查询,请确保将“ FIELD_NAME”替换为要搜索的字段的名称。 当然,您也可以通过将'post_type'='post'更改为'post_type'='page'对页面进行相同的操作。

 选择wp_posts.ID,wp_postmeta.meta_key
来自wp_posts
在wp_posts.ID = wp_postmeta.post_id上加入wp_postmeta
AND wp_postmeta.meta_key ='FIELD_NAME'
在哪里wp_posts.post_type ='post'
按wp_posts.ID asc排序

7.删除帖子元

每次安装插件时,WordPress都会对wp_postmeta表进行更改。 删除插件后,数据仍然会杂乱无章地存在。 您可以使用此查询清除它; 只需记住将“ UselessMetaKey”更改为适当的值即可。

 从wp_postmeta删除,其中meta_key ='UselessMetaKey';

8.更改默认用户名

WordPress在“ Admin”名称下创建默认用户帐户。 这非常明显,如果黑客或其他人拦截了您的帐户密码,可能会成为问题。 他们只是登录并获取或删除所需内容。 为了您自己的安心,可以更改此默认用户名。

 更新wp_users SET user_login ='Awesome Boss'WHERE user_login ='Admin';

9.识别未使用的标签

如果删除旧帖子,则每个帖子的旧标签将保留在数据库中。 该查询使您可以识别所有旧标签。

 选择*从wp_terms wt
内联wp_term_taxonomy wtt ON wt.term_id = wtt.term_id其中wtt.taxonomy ='post_tag'AND wtt.count = 0;

10.删除垃圾邮件

如果您经营一个博客,那么您会讨厌所有堆积如山的垃圾邮件评论。 这条SQL命令将清除您标记为垃圾邮件的所有注释:

 从wp_comments删除Wp_comments.comment_approved ='spam';

11.重设密码

如果您忘记了WordPress密码或只是想更改它(或其他人的密码),这是一个方便的方法:

 更新wp_users SET user_pass = MD5('new_password')WHERE user_login ='myusername';

12.重新分配文章

如果您想拥有该网站随附的一些旧的旧文章的所有权,或者现在您拥有这些权利,只要您知道新旧作者的ID(可以获取这些ID),就可以轻松地做到这一点。从管理面板中的“作者和用户”页面)。 只需单击作者的名称,然后查找user_id字段。

 更新wp_posts SET post_author ='new-author-id'WHERE post_author ='previous-author-id';

13.删除修订

如果您在WordPress中多次编辑帖子,则会保存修订副本,随着时间的推移,这些副本的总和可能会增加很多,并且会浪费大量资源,从而降低数据库的速度。 像这样清除它们:

 从wp_posts a删除a,b,c
左联接wp_term_relationships b ON(a.ID = b.object_id)
左联接wp_postmeta c ON(a.ID = c.post_id)
在哪里a.post_type ='revision'

这将删除所有修订; 如果只想删除特定的ID,则必须检索ID号并将其添加到WHERE子句中。

14.删除所有未批准的评论

到处都是新评论,您没时间看? 尝试这个:

 从wp_comments删除,在comment_approved = 0处

15.禁用旧帖子评论

对于此查询,您可以将comment_status指定为“ open”,“ closed”或“ registered_only”,并包括日期条件。

 更新wp_posts SET comment_status ='closed'在post_date <'2016-03-11'AND post_status ='publish';

16.将评论电子邮件导出为唯一记录

累积数百条评论也可能导致来自同一电子邮件地址的数十条评论。 如果要导出所有这些电子邮件以进行邮寄活动或其他需求,则可以使用以下查询创建不同电子邮件的列表:

 从wp_comments中选择DISTINCT comment_author_email;

返回结果列表后,在“查询结果操作”下,选择“导出”选项。

17.删除Pingback

您最受欢迎的帖子可能会在数据库中积累大量的pingback。 要摆脱它们,请使用以下查询:

 从wp_comments删除WHERE comment_type ='pingback';

18.从特定URL删除评论

如果您从同一URL收到大量垃圾邮件,则可以通过以下查询一次性删除所有垃圾。 '%'表示您可以删除所有包含该URL字符串部分的条目,这对于避免键入URL十分方便,但是您可能要注意不要过于笼统,并删除原本不希望的URL。

如果您的垃圾邮件评论都包含相同的URL,则此查询使您可以一次性删除它们。 以下查询将删除具有特定URL的所有注释。 '%'表示所有在'%'符号内包含字符串的URL都将被删除,因此我确定要添加一个限定词,该限定词仅适用于垃圾评论。

 从wp_comments中删除WHERE comment_author_url类似“%nastyspamurl%”并且wp_comments.comment_approved ='spam';

19.识别并删除超过“ X”天的帖子

如果您需要标识和删除已存在一定天数的帖子,则此代码段会有所帮助。

要确定所有超过“ X”天的帖子,请运行此查询,并记住将“ X”替换为您要查找的天数:

 选择*从'wp_posts'
WHERE'post_type'='post'
AND DATEDIFF(NOW(),'post_date')> X

要删除超过“ X”天的所有帖子,请运行以下查询:

 从'wp_posts'删除
WHERE'post_type'='post'
AND DATEDIFF(NOW(),'post_date')> X

20.将WordPress帖子更改为页面(或将页面更改为帖子)

将帖子更改为页面很容易:

 更新wp_posts SET post_type ='page'在哪里post_type ='post'

…,如果您想再次更改它们:

 更新wp_posts SET post_type ='post'在哪里post_type ='page'

要更改单个帖子(页面),您必须在WHERE子句中包含正确的ID字段。

21.删除简码

WordPress的功能之一是允许我们通过短代码识别重复的代码段,从而重复使用它们。 简码很方便,但是如果您决定不再使用简码,请运行此查询,将“ trashshortcode”替换为您要丢失的简码的名称。

 更新wp_post SET post_content = replace(post_content,'[trashshortcode]','');

22.查找和替换帖子内容

如果发现由于任何原因需要更新或更改多个帖子中的现有文本,最简单的方法是使用以下简单查询:

 更新wp_posts SET'post_content'
=替换(“ post_content”,
'OldText',
'NewText');

23.查找缺少字段的帖子

如果要查找实际上尚未添加新字段的所有帖子或页面,则可以再次使用此查询,请确保将“ FIELD_NAME”更改为要检查的字段的名称,或将“发布”更改为“页面”以查找未使用此字段的页面。

使用此MySQL查询可获取所有缺少自定义字段的帖子。 就本教程而言,我们将查询post_type = page。 您将必须用实际的自定义字段名称替换CUSTOM_FIELD_NAME。

 选择wp_posts.ID,wp_postmeta.meta_key
来自wp_posts
左联接wp_postmeta ON wp_posts.ID = wp_postmeta.post_id
AND wp_postmeta.meta_key ='CUSTOM_FIELD_NAME'
其中wp_postmeta.meta_key为null且wp_posts.post_type ='post'
按wp_posts.ID asc排序

24.查找编辑帖子的查询

有时可以方便地查询WordPress MySQL表中最近修改(上个月或最后几天)的帖子。 以下是一些方便的查询:

如果您不断更新帖子中的事实和数据,那么很容易迷失方向。 以下一系列查询将帮助您查找在特定时间段内最近被修改的帖子:

在上个月:

 从wp_posts中选择*,其中post_modified> NOW()-间隔X个月
ORDER BY后修改后的DESC;

在上周:

 从wp_posts中选择*,其中post_modified> NOW()-间隔1周
ORDER BY后修改后的DESC;

您可以将间隔更改为所需的任何值,例如DAY或HOUR。

25.按类别查找所有帖子

首先,您需要找到类别名称的ID。 查找特定帖子类别ID的简单方法是以下查询(将“ GENERAL”替换为您想到的类别名称:

 选择wp_term_taxonomy.term_taxonomy_id
从wp_term_taxonomy加入(wp_term_taxonomy.term_id = wp_terms.term_id)上的wp_terms
其中wp_term_taxonomy.taxonomy ='category'和wp_terms.name ='GENERAL';

然后,您可以找到该term_taxonomy_id的所有帖子(用正确的ID替换999):

 选择* from wp_posts加入wp_term_relationships上(wp_posts.ID = wp_term_relationships.object_id)
其中wp_term_relationships.term_taxonomy_id = 999;

26.哪些帖子收到最严重的垃圾邮件

您可以在您的网站上找到似乎吸引最多垃圾邮件发送者的十大帖子。 您始终可以将“ 10”更改为5或20,也可以更改您感兴趣的任何值。

 选择“ comment_post_ID”,数量为COUNT(*)
在`wp_comments`中,在`comment_approved` ='spam'中
GROUP BY`comment_post_ID`
按金额排序DESC LIMIT 0、10

27.月刊

如果您允许来自来宾或其他授权用户的帖子,则可以确定在一个示例的时间范围内(例如本示例),一个作者发表了多少篇文章。

当您需要处理大量文章时,这可以帮助生成用于后期跟踪的数据,例如总体趋势或网站增长。 如果需要,可以通过将post_author添加到WHERE子句或指定特定的MONTHNAME和YEAR来更加具体。

 选择wp_users.display_name AS编写者,CONCAT_WS(',',MONTHNAME(`post_date`),YEAR(`post_date`))AS`post_month`,COUNT(*)AS`post_count`
来自`wp_posts`
加入wp_users ON(wp_posts.post_author = wp_users.id)
在哪里`post_type` ='post'
AND`post_status` ='发布'
按“ post_month”分组
ORDER BY`post_date`

如您所见,MySQL数据库中的WordPress站点几乎无所不能。

那里有许多不错的教程,但是希望,我们通过提供上述示例为您简化了许多任务。

祝好运!

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。如若转载,请注明出处:http://www.botadmin.cn/sylc/10896.html