我正在尝试将我的术语数字化。但问题是nog的每一项都是数字。所以我有以下术语(查看下图),其中一些是维度,一些是其他。正如你所看到的,我的get_terms()
函数,按名称对它们进行排序,但如果它们是数字,则只查看第一个字符。所以1400mm小于500mm。
我不知道从哪里开始。我是否应该尝试修改的结果get_terms()
或钩入get_terms_orderby() 作用但我不知道怎么做。
显示条款的我的代码:
<?php
$taxonomy = \'product-filter\';
$parents = get_terms( $taxonomy, array( \'hide_empty\' => false, \'parent\' => 0, \'orderby\' => \'id\' ) );
if( ! empty( $parents ) ) {
foreach( $parents as $parent ) {
echo \'<ul>\';
echo \'<h2>\' . $parent->name . \'</h2>\';
$children = get_terms( $taxonomy, array( \'hide_empty\' => false, \'child_of\' => $parent->term_id ) );
foreach( $children as $child ) {
echo \'<li><label><input type="checkbox">\' . $child->name . \' (\' . $child->count . \')</label></li>\';
}
echo \'</ul>\';
}
}
?>
最合适的回答,由SO网友:Tung Du 整理而成
您可以使用usort 对对象排序的步骤$children
.
获取$children
对象可以如下所示:
usort( $children, function($a, $b) {
$ai = filter_var($a->name, FILTER_SANITIZE_NUMBER_INT);
$bi = filter_var($b->name, FILTER_SANITIZE_NUMBER_INT);
if ($ai == $bi) {
return 0;
}
return ($ai < $bi) ? -1 : 1;
});