WP的Woocommerce中wc_add_to_cart_message挂钩的替代方案

时间:2014-02-17 15:15:29

标签: wordpress woocommerce

我使用Woocommerce中的添加到购物车消息钩来编辑文本并从某些按钮中删除一些类。看来这个钩子现在在Woocommerce 2.1中被弃用了,我找不到替代品。

我想从“继续购物”按钮中删除“按钮”类。这个类在Woocommerce核心中定义,我想留下未经编辑的未来更新。

我正在尝试编辑的行位于woocommerce / includes / wc-cart-functions.php第94行。

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

有没有人为这个钩子找到合适的替代品呢?提前致谢!

5 个答案:

答案 0 :(得分:10)

这对我有用

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

编辑:感谢Kaarel Kaspar的修正

答案 1 :(得分:3)

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

答案 2 :(得分:0)

这可能是一个解决方案。如果你有更好的方法或想法,请改变:

filter-name已更改为2.1版本为“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;
}
希望它有所帮助。 欢呼声

答案 3 :(得分:0)

尽管此线程有点旧,但我发现了关于自3.0版以来已弃用的同一问题的链接!从G搜索引擎上的第一个链接开始,所以这是修复我的错误的地方。

错误:

注意:从3.0版开始,不推荐使用wc_add_to_cart_message过滤器!请改用wc_add_to_cart_message_html。在第4329行的/sitepath.com/wp-includes/functions.php中

注意:自版本3.0起,woocommerce_get_page_id已被弃用!请改用wc_get_page_id。在第4329行的/sitepath.com/wp-includes/functions.php中

您可以看到解决方案出在问题上(错误消息)。

使用wc_add_to_cart_message_html

使用wc_get_page_id instead

答案 4 :(得分:0)

从2020年开始,这是必需的过滤器:不推荐使用wc_add_to_cart_message。在这里,我只是将消息包装成跨度:

//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 );