wordpress数据库怎么优化?
wordpress数据库怎么优化?
大家在使用wordpress的时候,有的时候想把文章分类下的文章全部提取出来,有没有什么简便的方法呢?答案肯定是有的,就是通过wordpress的数据直接来查询。
我们先介绍一下wordpress数据库中的几个表:
wp_terms:里面主要是文章标签编号、名称、别名、分类目录名称、别名等;
wp_term_relationships:对象ID(object_id,部分对应文章ID),对象分类ID(term_taxonomy_id,部分对应分类目录编号)
wp_term_taxonomy:主要是文章分类目录,包括词项分类标号(term_taxonomy_id)、词项编号(term_id)、类型(taxonomy,目录、标签、导航菜单)、文章数(count)等;
还有一些其它的关键信息表,如下面的几个:
wp_options:里面主要是网站描述、站点URL等信息;
wp_users:网站用户表,包含后台登录帐号;
wp_usermeta:网站用户信息表,用户姓名、邮箱、描述等。
为了实现把文章分类下的文章全部提取出来,我们需要用到需要用到wp_terms、wp_term_relationships、wp_term_taxonomy三个表,将里面的信息进行关联,就可以导出分类目录下的文章地址。
假设给定的分类ID为$CID,那么$CID就对应wp_term_taxonomy表中的term_taxonomy_id字段,因此我们可以获得该分类下的文章数:
select count from wp_term_taxonomy where term_taxonomy_id=$CID and taxonomy =’category’
再根据term_taxonomy_id获取文章标号和标题的SQL,需要联合三个表进行查询,post_status = ‘publish’ 是指文章已经发布,post_type=’post’ 是指记录类型是文章,taxonomy = ‘category’ 是指类型是目录:
select ID,post_title,post_date,post_name from wp_posts,wp_term_relationships,wp_term_taxonomy where ID=object_id and wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id and post_type=’post’ and post_status = ‘publish’ and wp_term_relationships.term_taxonomy_id = $CID and taxonomy = ‘category’ order by ID desc
这样就能把分类目录下的所有文章提取出来。
另外WordPress 有个自动保存与记录修订版本的功能,这2个功能着实鸡肋,时间长了数据库内会产生很多无用数据,我们可以将这2个功能禁用。方法如下:
/** 禁用文章修订功能 */
define(‘WP_POST_REVISIONS’, false);
/** 禁用自动保存功能 */
define(‘AUTOSAVE_INTERVAL’, false);
将上面的代码加入 wp-config.php文件中,注意顺序,如果放在最底部是不生效的,具体位置如下:
define(‘WP_POST_REVISIONS’, false);
/** 禁用自动保存功能 */
define(‘AUTOSAVE_INTERVAL’, false);
/* 好了!请不要再继续编辑。请保存本文件。使用愉快! */
/** WordPress目录的绝对路径。 */
if ( !defined(‘ABSPATH’) )
define(‘ABSPATH’, dirname(__FILE__) . ‘/’);
/** 设置WordPress变量和包含文件。 */
require_once(ABSPATH . ‘wp-settings.php’);
这样保存后,大家就可以发现文章修订版本记录都没有了。
最后,如果数据库中已经存在了很多修订版本记录,可以用下面的SQL命令来删除即可:
DELETE FROM wp_postmeta WHERE post_id IN (SELECT id FROM wp_posts WHERE post_type = 'revision');
DELETE FROM wp_term_relationships WHERE object_id IN (SELECT id FROM wp_posts WHERE post_type='revision');
DELETE FROM wp_posts WHERE post_type='revision';
按顺序一条一条来执行,另外此过程不会影响网站的正常运行以及数据的完整性,大家放心执行命令就行。
最后,如果想将文章由发布状态改为草稿,执行下面的SQL命令即可:
UPDATE `wp_posts` SET `post_status` ='publish' WHERE (`ID`='XXXX' );
将XXXX改为文章ID即可。
如果想将全部已发布文章改为草稿,SQL命令如下:
UPDATE `wp_posts` SET `post_status` ='draft' WHERE (`post_status`='publish');
再说明一下几个状态代表的含义:
2、draft:草稿
3、auto-draft:自动保存的草稿
4、inherit:修订版本
5、trash:回收站
6、publish:已发布
7、future:定时
8、private:私有
大家根据需要修改即可。
常见问题FAQ
- 免费下载或者SVIP会员专享资源能否直接商用?
- 提示下载完但解压失败或打不开?
- 下载完解压发现有压缩包密码?
爱资源分享 » wordpress数据库怎么优化?