You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WooCommerce 3获取配送类别返回空数组求助(WordPress 4.9)

解决WooCommerce后台获取配送类别列表为空的问题

嘿,我太懂那种明明觉得差个小细节但就是卡壳的懊恼了!针对你在WordPress 4.9环境下用WC_Shipping类获取配送类别返回空数组的问题,我来帮你捋捋:

首先,你当前用的方法在旧版本WooCommerce里可能不太对——直接实例化WC_Shipping类并调用get_shipping_classes(),并没有正确触发配送类别数据的加载逻辑。试试下面两种更可靠的方式:

方法一:使用WC_Shipping_Classes类

这是WooCommerce官方推荐的获取配送类别的方式,适配你用的旧版本:

// 初始化配送类别管理对象
$shipping_classes_obj = new WC_Shipping_Classes();
// 获取所有配送类别(包括未关联产品的)
$shipping_classes = $shipping_classes_obj->get_shipping_classes();

// 打印结果调试
var_dump($shipping_classes);
die();

方法二:直接通过自定义分类查询获取

如果上面的方法还是没结果,你可以直接查询product_shipping_class这个自定义分类(配送类别本质就是这个分类下的术语):

$shipping_classes = get_terms( 'product_shipping_class', array(
    'hide_empty' => false, // 强制显示所有类别,哪怕没有产品关联
    'orderby'    => 'name', // 按名称排序
    'order'      => 'ASC'
) );

var_dump($shipping_classes);
die();

另外还要检查两个关键点:

  • 确保代码执行时机正确:别把这段代码直接放在插件文件最顶部,最好挂在admin_init或者woocommerce_admin_init钩子上,比如:
    add_action('admin_init', 'my_get_shipping_classes');
    function my_get_shipping_classes() {
        // 上面的代码放在这里
    }
    
    这样能保证WooCommerce已经完全加载完成,不会因为过早执行导致数据获取失败。
  • 确认后台已有配送类别:先去WooCommerce > 设置 > 配送 > 配送类别页面看看,你是不是还没创建任何配送类别?如果本来就没数据,那返回空数组就是正常的啦。

内容的提问来源于stack exchange,提问作者mike.bronner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:58:21