您可以尝试MySQL函数SUBSTRING_INDEX()
在get_terms_orderby
过滤器:
/**
* Order by the last word in the term name
* @link https://wordpress.stackexchange.com/a/195039/26350
*/
add_filter( \'get_terms_orderby\', function( $orderby, $args )
{
if( isset( $args[\'orderby\'] ) && \'wpse_last_word\' === $args[\'orderby\'] )
$orderby = " SUBSTRING_INDEX( t.name, \' \', -1 ) ";
return $orderby;
}, 10, 2 );
按术语名称中的最后一个单词排序。
在这里,我们通过定制激活最后一个单词wpse_last_word
参数:
$terms = get_terms( \'category\', [ \'orderby\' => \'wpse_last_word\' ] );
您还可以添加
wpse_last_word
参数,通过
get_terms_args
过滤器,如果需要覆盖某些术语查询。
我最近用过这个方法here 对于帖子。