我使用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 );
有没有人为这个钩子找到合适的替代品呢?提前致谢!
答案 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 "%s" to your cart.', 'woocommerce' ), join( __( '" and "', 'woocommerce' ), array_filter( array_merge( array( join( '", "', array_slice( $titles, 0, -1 ) ) ), array_slice( $titles, -1 ) ) ) ) );
} else {
$added_text = sprintf( __( '"%s" 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 →</a> %s',
$return_to, __( 'Continue Shopping', 'woocommerce' ),
$added_text
);
else :
$message = sprintf(
'<a href="%s" class="alert-link">%s →</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 );