问题的根源在哪里
首先,您要求按某个字符串中的部分进行排序。这是
no native functionality in any programming language.
其次,您实际的问题不是“按数字排序”,而是您构建这些数字的方式。如果您事先知道这个问题(并考虑到它),那么您可以编写一个过滤器,将这些零填充到您的数字之前。
如何忽视实际问题并加以解决
这并不能真正解决问题,但我们(也许你也一样)不知道你可能会遇到多少“问题”(10、1k、100k?),我们只是在显示时添加排序。下面是供您使用的模板标记:
function wpse80063_numsorted_issues()
{
$terms = get_terms( \'issues\', array( /* of possible args */ );
$digits = strlen( count( $terms ) );
$sorted_terms = array();
foreach ( $terms as $term )
{
preg_match( "/\\d+/", $term, $nr );
$nr = sprintf( "%0{digits}d", $nr );
// If the above line doesn\'t work, take this one:
// $nr = str_pad( $nr, $digits, "0", STR_PAD_LEFT );
$sorted_terms[ $nr ] = $term;
}
! empty( $sorted_terms ) AND sort( $sorted_terms );
return $sorted_terms;
}