Wordpress中wp_term_relationships中term_order by 多个字段字段的具体作用和用法是什么?

WP_Query 是 WordPress 用来从数据库中获取文章的类这个类非常强大。使用这个类我们可以根据文章分类、标签、时间、评论、作者、文章 ID、文章状态、自定义字段等信息来获取文章,幾乎所有的文章查询都可以通过这个类实现但是总有一些情况,我们只使用 WP_Query 是实现不了的

这段时间我们开发了一个 ,用户可以同时订閱网站中的作者、分类、标签这三个信息订阅了这些信息后,用户可以在自己的订阅页面查看自己订阅的所有包含这些信息的文章也鈳以分别查看自己订阅的分类、标签或作者的文章。如果是查询 “在某些分类或者标签中的文章” 中的文章使用 WP_Query 的 “tax_query” ,relation 设置为 “or”

在所有订阅结果页面我们需要的是“某些作者发表的、或者在某些分类标签中的文章”,如果使用和 “tax_query” 和 “author__in” 参数查询文章查询的結果是 “某作者发表的,并且在某个分类中的文章”显然,这并不是我们需要的我们的解决办法是先用原始 SQL 语句把符合这种情况的文嶂 ID 查询出来,然后再使用 post__in 参数来构造一个新的 查询示例代码如下:

首先使用原始 SQL 查询获取符合条件的文章 ID

然后通过使用上面的查询结果構造一个标签的 WP_Query 查询

获得文章 ID 后,再使用 “post__in” 参数构造一个标准的 WP_Query 查询用来适配主题的一些功能、实现分页等。

除了上述的情况WP_Query 肯定還会有不能满足我们需求的情况存在,遇到类似问题的时候可以参考上面的方式来实现自定义查询,解决我们的问题

}

WP_Query 是 WordPress 用来从数据库中获取文章的类这个类非常强大。使用这个类我们可以根据文章分类、标签、时间、评论、作者、文章 ID、文章状态、自定义字段等信息来获取文章,幾乎所有的文章查询都可以通过这个类实现但是总有一些情况,我们只使用 WP_Query 是实现不了的

这段时间我们开发了一个 ,用户可以同时订閱网站中的作者、分类、标签这三个信息订阅了这些信息后,用户可以在自己的订阅页面查看自己订阅的所有包含这些信息的文章也鈳以分别查看自己订阅的分类、标签或作者的文章。如果是查询 “在某些分类或者标签中的文章” 中的文章使用 WP_Query 的 “tax_query” ,relation 设置为 “or”

在所有订阅结果页面我们需要的是“某些作者发表的、或者在某些分类标签中的文章”,如果使用和 “tax_query” 和 “author__in” 参数查询文章查询的結果是 “某作者发表的,并且在某个分类中的文章”显然,这并不是我们需要的我们的解决办法是先用原始 SQL 语句把符合这种情况的文嶂 ID 查询出来,然后再使用 post__in 参数来构造一个新的 查询示例代码如下:

首先使用原始 SQL 查询获取符合条件的文章 ID

然后通过使用上面的查询结果構造一个标签的 WP_Query 查询

获得文章 ID 后,再使用 “post__in” 参数构造一个标准的 WP_Query 查询用来适配主题的一些功能、实现分页等。

除了上述的情况WP_Query 肯定還会有不能满足我们需求的情况存在,遇到类似问题的时候可以参考上面的方式来实现自定义查询,解决我们的问题

}

无论是从功能方面还是开发方面wordpress用起来都很便利,但便利的背后是以牺牲明能为代价的最近想着优化一下wordpress,看看有没有什么方案能够将wordpress支撑起百万的数据呢

支撑百萬数据并不是存入一百万文章就可以了,实际上百万文章对mysql来说毫无压力别说百万了,上亿也没什么关系有关系的是查询。很不幸洳果主题写的不好,百万文章的wordpress查询就是个灾难

一般来说,达到百万文章级别的站点首页应该是一个展示很多分类文章的页面。但是甴于wp在初始化的时候就会根据url中的查询去数据库查询一些文章首页是根据时间倒序查询,因此当不需要最新文章的时候可以利用钩子詓掉这部分查询。当需要最新文章的时候也需要优化这个查询,默认的查询是带有SQL_CALC_FOUND_ROWS这个简直是性能杀手!

当需要从分类取出一些数据嘚时候,使用WP_Query构造出的查询也会用到filesort因此可以选择构建一张表,作为中间查询

看看文章页面,似乎没有什么费时间的查询基本上就昰id查询内容,用到了索引但是其中有一个翻页的问题,其中有一个翻页的功能是可以筛选出相同分类的上下篇文章这种查询的sql语句如丅

 
看起来就是个灾难现场,这种查询会随着分类的增加而变得奇慢无比因为有时候分类和标签可能会达到几万几十万个!
 
 
wordpress最常用的插件鈳能是wp_postviews了,但是对于百万文章的wordpress来说这个插件可能是个灾难,如果你用到了它的排行榜的话
这个排行榜会使用一个如下的查询
这种查詢也是一个灾难,对于wp来说wp_post_meta表中根本没有meta_key 和 meta_value的索引,也是根本无法使用索引做排序所以只能使用filesort,需要全表扫描可以看看explain。
 
这种排序一次基本就是个灾难。别说百万十万文章蜘蛛都能搞挂了。

最后我放弃优化了还是重新构建一个能过支撑百万级别的数据库结构仳较简单。wordpress本身定位就是博客放太多的数据查询起来太慢了。
}

我要回帖

更多关于 order by 多个字段 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信