在 WooCommerce 购物车页面的每个产品下方添加运输类别

问题描述 投票:0回答:2

我已经为我的产品配置了运输级别。但我想将它们显示在购物车页面中每个产品的下方。像这样的东西:

这可以通过编辑 PHP 来完成吗?

php wordpress woocommerce cart
2个回答
3
投票

要在购物车页面显示产品运输类别名称,有很多方法可以做到:

1)使用挂钩在

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;
}

代码进入活动子主题(或活动主题)的 function.php 文件。

此代码已经过测试并有效。


2)使用挂钩在

woocommerce_cart_item_name
过滤器挂钩中的自定义函数,这样:

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>';
}

代码进入活动子主题(或活动主题)的 function.php 文件。

测试和工作。


0
投票

我已经使用了这个代码,我几乎得到了我的结果,但我也想在发货前发货。谁能修改这段代码?谢谢See the result here

add_filter( 'woocommerce_cart_item_name', 'shipping_class_in_item_name', 10, 3); 函数 shipping_class_in_item_name( $item_name, $cart_item, $cart_item_key, $rates, $package ) {

$product = $cart_item['data'];
$shipping_class_id = $product->get_shipping_class_id(); 
$shipping_class_term = get_term( $shipping_class_id, 'product_shipping_class' );

if( empty( $shipping_class_id ) )
    return $item_name;

$label = __( 'Shipping', 'woocommerce' );

return $item_name . '<br>
    <p class="item-shipping_class">
        <strong>' .$label . ': </strong>' . $shipping_class_term->name . '</p>';

}

© www.soinside.com 2019 - 2024. All rights reserved.