Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取Woocommerce 3中的所有装运类_Php_Wordpress_Woocommerce_Shipping_Custom Taxonomy - Fatal编程技术网

Php 获取Woocommerce 3中的所有装运类

Php 获取Woocommerce 3中的所有装运类,php,wordpress,woocommerce,shipping,custom-taxonomy,Php,Wordpress,Woocommerce,Shipping,Custom Taxonomy,我一直无法解决这个问题,但我忍不住觉得我错过了一些简单的东西 我正在开发一个WooCommerce插件,它应该在其管理设置页面上提供一个发货类列表。另一个问题的答案中建议的以下代码表明,以下代码应起作用: $shipping = new \WC_Shipping(); $shipping_classes = $shipping->get_shipping_classes(); var_dump($shipping_classes); die(); 不幸的是,输出是

我一直无法解决这个问题,但我忍不住觉得我错过了一些简单的东西

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

$shipping           = new \WC_Shipping();
$shipping_classes   = $shipping->get_shipping_classes();
var_dump($shipping_classes);
die();
不幸的是,输出是一个空数组

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

更新 我的问题与这里概述的完全相同:
并提供了一个工作环境。但是,我不认为这是一个解决方案。

要获得所有装运类别,您只需要以下几项:

$shipping_classes = get_terms( array('taxonomy' => 'product_shipping_class', 'hide_empty' => false ) );
测试和工作。这将为您提供一个所有装运类别的
WP\u Term
对象数组

在Woocommerce中,配送类位于
product\u shipping\u 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文件

用法(测试示例):

$shipping_classes=wc_get_shipping_classes();//上船运课
回声';打印(装运类);回显“”;//测试原始输出

您是要获取所有的配送类,还是配送方法?另外,您是否尝试过删除
WC_Shipping()前面的斜杠?这在我的情况下实际上不起作用。我已经试过了,由于某些原因,它只返回一个航运类,而不是所有航运类。我在原来的问题中添加了一个与另一个问题的链接,我发现这个问题更准确地提出了确切的问题。我还提供了一个解决方案,但我认为这不是一个合适的解决方案。@mike.bronner非常奇怪,因为所有的装运类别都是Woocommerce中“product\u shipping\u class”自定义分类法中的术语。因此,我更新了我的答案,添加了第二种方式……试试看。感谢您的努力。:)我很乐意循环使用
get_terms()
(没有任何参数)的结果并过滤掉我的结果。我很有信心,某个地方有一个bug或冲突正在肆虐|
$shipping_classes = wc_get_shipping_classes(); // Get Shipping Classes
echo '<pre>'; print_r($shipping_classes); echo '</pre>'; // Test raw output