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年以来没有可用的支持:(无论如何,这很好,非常感谢您的时间和帮助!