I can’t find a way to change the Woocommerce default message when you try to add another product to your cart marked as sold individually.
I found out that this is how you edit the default success message when adding products to your cart:
add_filter ( 'wc_add_to_cart_message', 'wc_add_to_cart_message_filter', 10, 2 ); function wc_add_to_cart_message_filter($message, $product_id = null) { $titles[] = get_the_title( $product_id ); $titles = array_filter( $titles ); $added_text = sprintf( _n( '%s has been added to your cart.', '%s have been added to your cart.', sizeof( $titles ), 'woocommerce' ), wc_format_list_of_items( $titles ) ); $message = sprintf( '%s <a href="%s" class="button">%s</a> <a href="%s" class="button">%s</a>', esc_html( $added_text ), esc_url( wc_get_page_permalink( 'checkout' ) ), esc_html__( 'Checkout', 'woocommerce' ), esc_url( wc_get_page_permalink( 'cart' ) ), esc_html__( 'View Cart', 'woocommerce' )); return $message; }
Advertisement
Answer
You can use gettext
filter hook to change this notice located in WC_Cart
add_to_cart()
method:
add_filter( 'gettext', 'change_specific_add_to_cart_notice', 10, 3 ); add_filter( 'ngettext', 'change_specific_add_to_cart_notice', 10, 3 ); function change_specific_add_to_cart_notice( $translated, $text, $domain ) { if( $text === 'You cannot add another "%s" to your cart.' && $domain === 'woocommerce' && ! is_admin() ){ // Replacement text (where "%s" is the dynamic product name) $translated = __( 'It is not possible to add again "%s"', $domain ); } return $translated; }
Code goes on function.php file of your active child theme (or active theme). Tested and works.