可以使用 WooCommerce 提供的 WC_Shipping_Class
类来创建不同的运输类别。以下是一个简单的示例:
// 创建自定义运输类别
function add_shipping_classes() {
$params = array(
'id' => 'small',
'description' => '小型包裹',
);
$shipping_class = new WC_Shipping_Class( $params );
$shipping_class->save();
$params = array(
'id' => 'large',
'description' => '大型包裹',
);
$shipping_class = new WC_Shipping_Class( $params );
$shipping_class->save();
}
add_action( 'woocommerce_shipping_init', 'add_shipping_classes' );
// 在产品设置页面添加运输类别选项
function add_shipping_class_select_box() {
global $product_object;
if ( ! $product_object ) {
$product_id = absint( $_REQUEST['post'] );
$product_object = wc_get_product( $product_id );
}
$args = array(
'taxonomy' => 'product_shipping_class',
'hide_empty' => false,
'show_option_none' => __( 'Select shipping class', 'woocommerce' ),
'name' => 'product_shipping_class[' . $product_object->get_id() . '][]',
'id' => 'product_shipping_class',
'class' => 'multiselect',
'value_field' => 'slug',
'selected' => $product_object->get_shipping_class(),
);
wc_dropdown_variation_attribute_options( $args );
}
add_action( 'woocommerce_product_options_shipping', 'add_shipping_class_select_box' );
// 在购物车页面或结账页面检查运输类别
function check_shipping_class( $package ) {
$small_items = array();
$large_items = array();
foreach ( $package['contents'] as $item_id => $values ) {
$product = $values['data'];
if ( $product->get_shipping_class() == 'small' ) {
$small_items[] = $item_id;
} elseif ( $product->get_shipping_class() == 'large