Remove attribute values from product variation title and show them on separate rows

爷,独闯天下 提交于 2019-12-29 08:52:08

问题


I have a checkout page where I want to:

  • Remove selected product attribute values from product variation title item.
  • Remove the quantity from item title too.
  • Display the different product attribute value such as size, color and the quantity on different rows, for this product variation item.

I want to display on my checkout page:

Aria Sport Shorts (the product title)

Color: Dusty Pink

Size: Small

QTY: 1

Instead of this:

Is it possible? Where I should start to make this real?


回答1:


UPDATED

1) Since WooCommerce 3+, to remove attribute values from Product variation title and to display them in a separate row will need to use this 2 dedicated simple hooks (in checkout page).

  • Removing attribute values from Product variation title:
add_filter( 'woocommerce_product_variation_title_include_attributes', 'variation_title_not_include_attributes' );
function variation_title_not_include_attributes( $boolean ){
    if ( ! is_cart() )
        $boolean = false;
    return $boolean;
}
  • Display Product variation attributes label and values in separate rows:
add_filter( 'woocommerce_is_attribute_in_product_name', 'remove_attribute_in_product_name' );
function remove_attribute_in_product_name( $boolean){
    if ( ! is_cart() )
        $boolean = false;
    return $boolean;
}

2) Checkout page - Remove the quantity from the product title and add it back in a separate row.

  • Remove the quantity from the product title:
add_filter( 'woocommerce_checkout_cart_item_quantity', 'remove_product_variation_qty_from_title', 10, 3 );
function remove_product_variation_qty_from_title( $quantity_html, $cart_item, $cart_item_key ){
    if ( $cart_item['data']->is_type('variation') && is_checkout() )
        $quantity_html = '';

    return $quantity_html;
}
  • Add back the cart item quantity in a separate row:
add_filter( 'woocommerce_get_item_data', 'filter_get_item_data', 10, 2 );
function filter_get_item_data( $item_data, $cart_item ) {

    if ( $cart_item['data']->is_type('variation') && is_checkout() )
        $item_data[] = array(
            'key'      => __('QTY'),
            'display'  => $cart_item['quantity']
        );

    return $item_data;
}

Code goes in function.php file of your active child theme (or theme) or also in any plugin file.

Tested in Woocommerce version 3+ and works. You should maybe need to make some styling changes…



来源:https://stackoverflow.com/questions/47377644/remove-attribute-values-from-product-variation-title-and-show-them-on-separate-r

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!