Alternative for the wc_add_to_cart_message hook in Woocommerce for WP

后端 未结 5 510
轮回少年
轮回少年 2020-12-17 00:48

I used the add to cart message hook in Woocommerce to edit the text and remove some classes from certain buttons. It seems this hook is now deprecated in Woocommerce 2.1 and

相关标签:
5条回答
  • 2020-12-17 01:03

    Woocommerce 2.3+,

        add_filter( 'wc_add_to_cart_message', 'custom_add_to_cart_message' );
        function custom_add_to_cart_message( $message  ){
        global $woocommerce;
    
        $added_text = __( 'Product was successfully added to your Network Kit.', 'woocommerce' );
        // Output success messages
        if ( get_option( 'woocommerce_cart_redirect_after_add' ) == 'yes' ) :
    
            $return_to  = apply_filters( 'woocommerce_continue_shopping_redirect', wp_get_referer() ? wp_get_referer() : home_url() );
    
            $message    = sprintf('<a href="%s" class="button wc-forward">%s</a> %s', $return_to, __( 'Continue Shopping', 'woocommerce' ), $added_text );
    
        else :
    
            $message    = sprintf('<a href="%s" class="button wc-forward">%s</a> %s', wc_get_page_permalink( 'cart' ), __( 'View your Network Kit', 'woocommerce' ), $added_text );
    
        endif;
    
        return $message;
    }
    
    0 讨论(0)
  • 2020-12-17 01:05

    This worked for me

    add_filter( 'wc_add_to_cart_message', 'custom_add_to_cart_message' );
    function custom_add_to_cart_message() {
        global $woocommerce;
    
            $return_to  = get_permalink(woocommerce_get_page_id('shop'));
            $message    = sprintf('<a href="%s" class="button wc-forwards">%s</a> %s', $return_to, __('Continue Shopping', 'woocommerce'), __('Product successfully added to your cart.', 'woocommerce') );
        return $message;
    }
    

    Edited: Thanks for the correction Kaarel Kaspar

    0 讨论(0)
  • 2020-12-17 01:08

    As of 2020 this is the filter required: wc_add_to_cart_message has been deprecated. Here I am simply wrapping the message in span:

    //New added to card message text
    function filter_wc_add_to_cart_message_html( $message, $products ) { 
      return "<span>".$message."</span>"; 
    }; 
    add_filter( 'wc_add_to_cart_message_html', 'filter_wc_add_to_cart_message_html', 10, 2 ); 
    
    0 讨论(0)
  • Although this thread is a bit old, I found the link to my same question about deprecated since version 3.0! from the first link on G search engine, so here is what fixed my errors.

    Errors:

    Notice: The wc_add_to_cart_message filter is deprecated since version 3.0! Use wc_add_to_cart_message_html instead. in /sitepath.com/wp-includes/functions.php on line 4329

    Notice: woocommerce_get_page_id is deprecated since version 3.0! Use wc_get_page_id instead. in /sitepath.com/wp-includes/functions.php on line 4329

    As you can see the solution is in the problem (error message).

    Use wc_add_to_cart_message_html

    Use wc_get_page_id instead

    0 讨论(0)
  • 2020-12-17 01:20

    this could be a solution. please change if you have better ways or ideas:

    the filter-name has changed with the 2.1-version to "wc_add_to_cart_message"

    add_filter( 'wc_add_to_cart_message', 'foo' );
    function foo() {
    
    $product_id = $_REQUEST[ 'product_id' ];
    
    if ( is_array( $product_id ) ) {
    
        $titles = array();
    
        foreach ( $product_id as $id ) {
            $titles[] = get_the_title( $id );
        }
    
        $added_text = sprintf( __( 'Added &quot;%s&quot; to your cart.', 'woocommerce' ), join( __( '&quot; and &quot;', 'woocommerce' ), array_filter( array_merge( array( join( '&quot;, &quot;', array_slice( $titles, 0, -1 ) ) ), array_slice( $titles, -1 ) ) ) ) );
    
    } else {
        $added_text = sprintf( __( '&quot;%s&quot; was successfully added to your cart.', 'woocommerce' ), get_the_title( $product_id ) );
    }
    
    // Output success messages
    if ( get_option( 'woocommerce_cart_redirect_after_add' ) == 'yes' ) :
    
        $return_to  = apply_filters( 'woocommerce_continue_shopping_redirect', wp_get_referer() ? wp_get_referer() : home_url() );
    
        $message    = sprintf(
            '<a href="%s" class="alert-link">%s &rarr;</a> %s',
            $return_to, __( 'Continue Shopping', 'woocommerce' ),
            $added_text
        );
    
    else :
    
        $message    = sprintf(
            '<a href="%s" class="alert-link">%s &rarr;</a> %s',
            get_permalink( wc_get_page_id( 'cart' ) ),
            __( 'View Cart', 'woocommerce' ),
            $added_text );
    
    endif;
    
    return $message;
    }
    

    hope it helps. cheers

    0 讨论(0)
提交回复
热议问题