获取Woocommerce 3中的所有送货课程

时间:2018-04-15 16:56:19

标签: php wordpress woocommerce shipping custom-taxonomy

我一直无法破解这个坚果,但不禁觉得我错过了一些简单的东西。

我正在开发一个WooCommerce插件,该插件应在其管理设置页面上提供发货类列表。在另一个问题的答案中建议的以下代码表明以下代码应该有效:

$shipping           = new \WC_Shipping();
$shipping_classes   = $shipping->get_shipping_classes();
var_dump($shipping_classes);
die();

不幸的是输出是一个空数组。

我正在使用Wordpress 4.9.5和WooCommerce 3.3.5。谢谢你的帮助!

更新 我有与此处概述的完全相同的问题: get_terms() returns Invalid Taxonomy并提供了解决方法。但是,我觉得这不是一个解决方案。

1 个答案:

答案 0 :(得分:2)

要获得所有送货课程,您只需要以下内容:

$shipping_classes = get_terms( array('taxonomy' => 'product_shipping_class', 'hide_empty' => false ) );

经过测试和工作。这将为您提供所有货运类的WP_Term个对象数组。

  

在Woocommerce中,货运类属于product_shipping_class自定义分类。

或者您可以将此自定义函数与简单的SQL查询一起使用:

function wc_get_shipping_classes(){
    global $wpdb;
    $return $wpdb->get_results( "
        SELECT * FROM {$wpdb->prefix}terms as t
        INNER JOIN {$wpdb->prefix}term_taxonomy as tt ON t.term_id = tt.term_id
        WHERE tt.taxonomy LIKE 'product_shipping_class'
    " );
}

代码放在活动子主题(或活动主题)的function.php文件中。

USAGE(测试示例):

$shipping_classes = wc_get_shipping_classes(); // Get Shipping Classes
echo '<pre>'; print_r($shipping_classes); echo '</pre>'; // Test raw output