Alternative for the wc_add_to_cart_message hook in

2019-01-25 22:53发布

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!

3条回答
冷血范
2楼-- · 2019-01-25 23:36

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

查看更多
成全新的幸福
3楼-- · 2019-01-25 23:45

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;
}
查看更多
欢心
4楼-- · 2019-01-25 23:53

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

查看更多
登录 后发表回答