get_terms orderby numeric

时间:2015-11-11 作者:Robbert

我正在尝试将我的术语数字化。但问题是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>\';
    }
}
?>

enter image description here

1 个回复
最合适的回答,由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;
});

相关推荐

WpQuery中的ORDERBY不区分大小写

我正在尝试按字母顺序对自定义帖子进行排序,我刚刚意识到,大写字母的排序要先于小写字母。有两家餐厅以“Cal”和“CAT”开头,并按字母顺序将“CAT”作为第一个返回。以下是我的$参数:$args = array( \'numberposts\' => -1, \'post_type\' => \'chef\', \'meta_key\' => \'restaurant\', \'orderby\' => \'meta_