Php Woo commerce get_shipping_method_class_names()未获取所有活动类

Php Woo commerce get_shipping_method_class_names()未获取所有活动类,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我正在创建我的自定义word press插件,尝试在我的项目中获取所有活动类或活动配送(如FedEx、UPS、USPS)。当我尝试使用以下代码获取时,这三个插件都处于活动状态: $shipping_methods_classes = WC()->shipping->get_shipping_method_class_names(); echo "<pre>"; print_r($shipping_methods_classes);die; 当我把这段代码写到heade

我正在创建我的自定义word press插件,尝试在我的项目中获取所有活动类或活动配送(如FedEx、UPS、USPS)。当我尝试使用以下代码获取时,这三个插件都处于活动状态:

$shipping_methods_classes  = WC()->shipping->get_shipping_method_class_names();
echo "<pre>";
print_r($shipping_methods_classes);die;
当我把这段代码写到header.php中时,它工作得很好,但是在我的自定义插件上并没有得到所有的结果。

它是由--


你试过在
woocommerce\u加载的
hook上运行代码吗?我没有试过用它,我们怎么能用它呢?没关系,现在看起来不相关了。你确定你有另一个有效的运输方式吗?好的,谢谢,我得到了解决方案…请发布你的解决方案给未来的读者。另外,在重读你的问题时,如果你无法在你的插件中获得活动信息,那么我必须返回
woocommerce\u loaded
。加载所有插件后,
header.php
模板会很好地加载,因此毫无疑问,WooCommerce已经完全加载,如果您直接在插件文件中调用它们,您可以
var_dump()
模板中的内容可能不会出现,除非函数(理想情况下是整个插件)在WC完全加载之前不会加载。
Array
(
    [flat_rate] => WC_Shipping_Flat_Rate
    [free_shipping] => WC_Shipping_Free_Shipping
    [local_pickup] => WC_Shipping_Local_Pickup
    [0] => wf_fedex_woocommerce_shipping_method
)
add_action('plugins_loaded', 'woocommerce_shipping_init');

function woocommerce_shipping_init() {
  if (class_exists('WC_Shipping')) {
    $shipping = new WC_Shipping();

    $shipping_classes = array();
    /* this return all services */
    $shipping_classes = $shipping->get_shipping_method_class_names();
    echo "<pre>";
    print_r($shipping_classes);die;
  } else {
    add_action('admin_notices', 'woocomeerce_plugin_activation_error');
  }
}
Array
(
    [flat_rate] => WC_Shipping_Flat_Rate
    [free_shipping] => WC_Shipping_Free_Shipping
    [local_pickup] => WC_Shipping_Local_Pickup
    [0] => wf_fedex_woocommerce_shipping_method
    [1] => WF_Shipping_UPS
    [2] => WF_Shipping_USPS
)