Php 按“订单”获取产品类别术语名称数组;菜单顺序“;在商业中

Php 按“订单”获取产品类别术语名称数组;菜单顺序“;在商业中,php,wordpress,woocommerce,product,custom-taxonomy,Php,Wordpress,Woocommerce,Product,Custom Taxonomy,我有以下代码搜索电子商务类别并将其放入自定义选项卡中: function wcbox_get_woo_categories() { $wp_cat = get_categories(array('hide_empty' => 0, 'taxonomy' => 'product_cat' )); $result = array(); foreach ($wp_cat as $cat) { $result[] = array('value

我有以下代码搜索电子商务类别并将其放入自定义选项卡中:

function wcbox_get_woo_categories()
{
    $wp_cat = get_categories(array('hide_empty' => 0, 'taxonomy' => 'product_cat' ));

    $result = array();
    foreach ($wp_cat as $cat)
    {
        $result[] = array('value' => $cat->name, 'label' => $cat->name);
    }
    return $result;
}
它工作得很好,问题是它没有把类别一个接一个地按顺序排列,而是按字母顺序排列

当我将月份放入类别中,并使用此函数查找它们时,整个问题都有其根源。类别应遵循月份的顺序,但由于此功能,它们遵循字母顺序

我怎样才能解决这个问题

关于更多信息,我正在使用WCBox插件

这就是它现在的工作原理:

它显示类别和产品

插件也有这个数组

            array(
                'type' => 'multiselect',
                'name' => 'filter_category',
                'label' => __('Choose Categories', 'wcbox'),

                'items' => array(
                    'data' => array(
                        array(
                            'source' => 'function',
                            'value'  => 'wcbox_get_woo_categories',
                        ),
                    ),
                ),
                'dependency' => array(
                    'field'    => 'filter_type',
                    'function' => 'vp_dep_is_categories',
                ),
            ),  

这很奇怪,因为默认情况下,产品类别
orderby
是按菜单顺序设置的。因此,可能是其他因素在干扰这一过程

在后端(设置)产品>类别中,每个术语都需要按您希望的显示顺序(按菜单顺序)排序

您可以直接使用
get\u terms()
WP函数,而不是
get\u categories()
(使用
get\u terms()

要在您的情况下强制执行菜单顺序,请使用以下命令:

function wcbox_get_woo_categories() {

    $term_names = get_terms( array(
        'hide_empty' => 0, 
        'taxonomy'   => 'product_cat', 
        'orderby'    => 'meta_value_num', 
        'meta_key'   => 'order',
        'fields'     => 'names',
    ) );

    $result = array();

    foreach( $term_names as $term_name ){
        $result[] = array( 'value' => $term_name, 'label' => $term_name );
    }

    return $result;
}

它应该可以工作。

没有工作,可能是因为插件也有阵列。对不起,我忘记提了。我刚刚编辑了主题,你能看一下吗?我尝试将hide_空、分类法等从函数中删除,但没有成功。Thanks@C埃萨恩。因此,您最好询问插件作者,是否有可用的钩子来更改顺序,因为此插件在其代码中强制按名称排序。自2016年以来没有可用的支持:(无论如何,这很好,非常感谢您的时间和帮助!