调试分类的wp_Query orderby

时间:2019-02-14 作者:Kolleyk

我似乎找不到WP\\U Query将orderby子句添加到SQL查询的位置。

我正在使用此代码:

function wpd_team_taxonomy_queries( $query ) {
if ( !is_admin() && $query->is_tax( \'team\' ) && $query->is_main_query() ) {
    $query->set( \'orderby\',  " SUBSTRING_INDEX( t.name, \' \', -1 ) "); 
    $query->set( \'order\', \'ASC\' );
}
}add_action( \'pre_get_posts\', \'wpd_team_taxonomy_queries\' );
除了我正在调试的一种特定的分类法类型之外,这种方法工作得很好。我可以看到WP\\u Query orderby参数的设置如上所述,但在调试插件或查询监视器插件的任何查询中,我都看不到SUBSTRING_INDEX( t.name, \' \', -1 ) 将代码添加到SQL查询中。

无论是正确排序的结果,还是未排序的结果。

如何找到为orderby构建的特定SQL查询的位置以调试此查询?

1 个回复
最合适的回答,由SO网友:Milo 整理而成

不能直接将SQL作为查询参数传递。的唯一有效值orderby 包含在the docs for WP_Query.

如果要直接修改SQL,需要使用posts_* 过滤器,在这种情况下posts_orderby.

相关推荐

将orderby url参数添加到主CPT管理菜单链接

是否可以更改CPT的主管理菜单链接(指向edit.php的链接)以包含URL参数?我不想让posts列表默认按“title”排序,但我不喜欢更新主查询以强制按“default”顺序排序,而不会设置列标题来反映它。如果单击“Title”列标题,它会添加“orderby”url参数,因此我想知道是否有一个挂钩/过滤器允许我将其附加到菜单链接。我看不出在注册新的帖子类型时如何做到这一点,我不希望在页面加载后使用javascript添加它。