公告
财富商城
积分规则
提问
发文
2019-07-04 05:50发布
Juvenile、少年°
I've configure shipping class for my products. But I want to display them below each product in the shopping cart page. Something like this :
Can this be done through editing the PHP?
To display the product shipping class name in cart page, there is many ways to do it:
1) Using a custom function hooked in woocommerce_cart_item_name filter hook, this way:
woocommerce_cart_item_name
add_filter( 'woocommerce_get_item_data', 'shipping_class_in_item_name', 20, 2 ); function shipping_class_in_item_name( $cart_data, $cart_item ) { $custom_items = array(); $product = $cart_item['data']; // Get the WC_Product object instance $shipping_class_id = $product->get_shipping_class_id(); // Shipping class ID $shipping_class_term = get_term( $shipping_class_id, 'product_shipping_class' ); $label = __( 'Shipping class', 'woocommerce' ); // Checking (To display it in checkout page too, remove below " || is_checkout()" ) if( empty( $shipping_class_id ) || is_checkout() ) return $cart_data; // Return default cart dat (in case of) // If product or variation description exists we display it $custom_items[] = array( 'key' => $label, 'display' => $shipping_class_term->name, ); // Merging shipping class name and product variation attributes + values (if there are some) if( ! empty( $cart_data ) ) $custom_items = array_merge( $custom_items, $cart_data ); return $custom_items; }
Code goes in function.php file of the active child theme (or active theme).
This code is tested and works.
2) Using a custom function hooked in woocommerce_cart_item_name filter hook, this way:
add_filter( 'woocommerce_cart_item_name', 'shipping_class_in_item_name', 20, 3); function shipping_class_in_item_name( $item_name, $cart_item, $cart_item_key ) { // Only in cart page (remove the line below to allow the display in checkout too) if( ! ( is_cart() || is_checkout() ) ) return $item_name; $product = $cart_item['data']; // Get the WC_Product object instance $shipping_class_id = $product->get_shipping_class_id(); // Shipping class ID $shipping_class_term = get_term( $shipping_class_id, 'product_shipping_class' ); if( empty( $shipping_class_id ) ) return $item_name; // Return default product title (in case of) $label = __( 'Shipping class', 'woocommerce' ); return $item_name . '<br> <p class="item-shipping_class" style="margin:12px 0 0;"> <strong>' .$label . ': </strong>' . $shipping_class_term->name . '</p>'; }
Tested and works.
最多设置5个标签!
To display the product shipping class name in cart page, there is many ways to do it:
1) Using a custom function hooked in
woocommerce_cart_item_name
filter hook, this way:Code goes in function.php file of the active child theme (or active theme).
This code is tested and works.
2) Using a custom function hooked in
woocommerce_cart_item_name
filter hook, this way:Code goes in function.php file of the active child theme (or active theme).
Tested and works.