不,您不能传递回调函数。回调函数是PHP,因此不能在MySQL中运行。要做到这一点,需要首先从数据库中查询结果,但您会得到错误的结果,因为它们未排序。
您需要使用posts_orderby
作为SQL查询的一部分执行此操作的筛选器:
add_filter(
\'posts_orderby\',
function( $orderby, $query ) {
if ( ! is_admin() && $query->is_post_type_archive( \'post_type_name\' ) ) {
$orderby = "SUBSTRING_INDEX(post_title, \' \', -1) ASC, post_title ASC";
}
return $orderby;
},
10,
2
);
使用
SUBSTRING_INDEX()
MySQL函数将结果按文章标题中第一个空格后的所有内容排序,然后按文章标题排序,这样,具有匹配姓氏的结果将按名字排序。