为了对代码进行一些优化,并为插件添加新功能,我想显示按特定元列值排序的帖子,如下所示;
query_posts($query_string . \'&meta_key=views&orderby=meta_value&order=DESC\');
这会不会导致总帖子数超过10000多篇的大型博客出现性能问题?我可以使用WP\\u Query()或get\\u posts()来代替Query\\u post()
为了对代码进行一些优化,并为插件添加新功能,我想显示按特定元列值排序的帖子,如下所示;
query_posts($query_string . \'&meta_key=views&orderby=meta_value&order=DESC\');
这会不会导致总帖子数超过10000多篇的大型博客出现性能问题?我可以使用WP\\u Query()或get\\u posts()来代替Query\\u post()
meta/tax_query
并将新的数组样式参数列表用于多组术语或自定义字段键,那么您的查询可能类似于以下内容array(
\'tax_query\' => array(
\'relation\' => \'OR\',
array(\'taxonomy\' => \'tax1\', \'field\' => \'slug\', \'terms\' => \'term1\'),
array(\'taxonomy\' => \'tax2\', \'field\' => \'slug\', \'terms\' => \'term2\'),
)
)
结果是:SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts
INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
INNER JOIN wp_term_relationships AS tt1 ON (wp_posts.ID = tt1.object_id)
WHERE 1=1 AND
...
AND (wp_term_relationships.term_taxonomy_id IN (XXX)
OR tt1.term_taxonomy_id IN (YYY) )
...
示例代码取自this trac ticket by @Otto. 请在那里订阅以跟踪其进度,并投票支持对core进行更改JOIN
对于每列。没有必要,因为桌子已经与1号不锈钢熔化在一起了JOIN
. 可悲的是,core在当前状态3.3下的行为就是这样。并将在3.4中保持这样。posts_clauses
过滤插件并手动更改查询。这个解决方案的真正问题是你必须str_replace( $search, $replace, $query );
在插件中。一方面,这可能会减慢速度,另一方面,你必须遵循这张罚单,因为当这张罚单进入时,你的插件就会崩溃(最好在你的插件代码中留下一个指向罚单的链接)。meta_query
问题也来了。社区会感谢您:)
如果您认为此img不合适,请将其删除