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钩子上,比如:
这样能保证WooCommerce已经完全加载完成,不会因为过早执行导致数据获取失败。add_action('admin_init', 'my_get_shipping_classes'); function my_get_shipping_classes() { // 上面的代码放在这里 } - 确认后台已有配送类别:先去WooCommerce > 设置 > 配送 > 配送类别页面看看,你是不是还没创建任何配送类别?如果本来就没数据,那返回空数组就是正常的啦。
内容的提问来源于stack exchange,提问作者mike.bronner
相关产品推荐
相关产品推荐

