By default, this message line will be:
Product product_name has been added to cart
I want to change product_name
to product_sku
.
Is there any way to do it? Thank you very much!
Note: this is the code I use to edit the message content, but it doesn't add product_sku
add_filter ( 'wc_add_to_cart_message_html', 'wc_add_to_cart_message_custom', 10, 2 );
function wc_add_to_cart_message_custom( $message, $products ) {
if ( empty( $products ) ) {
return $message;
}
foreach( $products as $product_id => $qty ) {
$titles[] = get_the_title( $product_id );
}
$titles = array_filter( $titles );
$added_text = sprintf( _n( 'product %s', 'product %s', sizeof( $titles ), 'woocommerce' ), wc_format_list_of_items( $titles ) );
$message = sprintf( '%s <img src="images/Success.svg" style="width: 24px"> <a style="font-weight: 800">Added: </a>%s', esc_html__( '', 'woocommerce' ), esc_html( $added_text ));
return $message;
}
CodePudding user response:
instead of collecting the product "titles" ie names, you can collect their SKUs instead.
add_filter ( 'wc_add_to_cart_message_html', 'wc_add_to_cart_message_custom', 10, 2 );
function wc_add_to_cart_message_custom( $message, $products ) {
if ( empty( $products ) ) {
return $message;
}
foreach( $products as $product_id => $qty ) {
// get product object from ID
$product = wc_get_product( $product_id );
// add product SKU to array
$skus[] = $product->get_sku();
}
$skus = array_filter( $skus );
$added_text = sprintf( _n( 'product %s', 'product %s', sizeof( $skus ), 'woocommerce' ), wc_format_list_of_items( $skus ) );
$message = sprintf( '%s <img src="images/Success.svg" style="width: 24px"> <a style="font-weight: 800">Added: </a>%s', esc_html__( '', 'woocommerce' ), esc_html( $added_text ));
return $message;
}