如何从GET_POSTS生成的SQL查询中删除‘GROUP BY’?

时间:2015-05-26 作者:Martic

Wordpress,归档目录页。从默认的WP\\u Query->get\\u posts()中,我们得到如下结果:

SELECT wp_posts.ID
FROM wp_posts
INNER JOIN wp_term_relationships
ON (wp_posts.ID = wp_term_relationships.object_id)
WHERE 1=1
AND ( wp_term_relationships.term_taxonomy_id IN (5) )
AND wp_posts.post_type = \'post\'
AND ((wp_posts.post_status = \'publish\'))
GROUP BY wp_posts.ID
ORDER BY wp_posts.post_date DESC
LIMIT 0, 40
我想从这个SQL查询中删除这个:“按wp\\u posts.ID分组”,是否可能?我读过关于pre\\u get\\u posts和posts\\u groupby filter的内容,但我知道只有通过值来更改GROUP,但如何绝对删除它呢?

1 个回复
SO网友:cybmeta

您可以使用posts_groupby filter:

add_filter( \'posts_groupby\', function( $groupby ) {

            return \'\';

} );
如果要应用以删除GROUP BY 仅对主查询,在前端,您可以执行以下操作:

add_filter( \'posts_groupby\', function( $groupby ) {

    if( ! is_admin() && is_main_query() ) {

            $groupby = \'\';

    }

    return $groupby;

} );

结束

相关推荐

使用JQuery/AJAX从MySQL动态填充层叠下拉菜单

我想要实现的是以与MS Access相同的方式管理WordPress页面前端的表。所以,我想显示由外键关联的依赖级联下拉列表,然后单击一些按钮来执行插入/更新查询。老实说,我觉得很奇怪,没有什么东西(甚至没有高级插件)可以做这样的操作,因为它们真的很有用,几乎被所有企业使用。