Alternative for the wc_add_to_cart_message hook in

2019-01-25 23:06发布

问题:

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 I can't find an alternative.

I want to remove the 'button' class from the 'Continue Shopping' button. This class gets defined in the Woocommerce core which I want to leave unedited for proper future updates.

The line I'm trying to edit is located in woocommerce/includes/wc-cart-functions.php line 94.

$message = sprintf('<a href="%s" class="button wc-forward">%s</a> %s', $return_to, __( 'Continue Shopping', 'woocommerce' ), $added_text );

Did anyone find a proper alternative for this hook yet? Thanks in advance!

回答1:

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



回答2:

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


回答3:

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