我想在不修改基本的woocommerce插件的情况下隐藏/删除来自woo commerce的特定消息。 有几种与优惠券相关的消息,如
以及其他几个与这些优惠券代码相似的内容。
我只想隐藏这些类型的优惠券/购物车消息,其他人则很喜欢“产品成功添加!”或任何其他错误消息。
基本上,目的是显示所有其他消息(错误和成功消息),但不想在这些消息中显示优惠券消息和优惠券代码。
那么,有没有办法通过做任何钩子等来做到这一点,就像我发现消除所有消息字符串(如果我没有错)。
add_filter( 'woocommerce_coupon_message', '__return_empty_string' );
答案 0 :(得分:2)
好的,找到了解决方案
转到woocommerce tempaltes,复制通知文件夹并编辑所需的模板,在我的情况下是error.php
复制/编辑代码
<ul class="woocommerce-error">
<?php
foreach ( $messages as $message ) :
if ( $message == "Coupon code already applied!" ) {
$message = "";//empty error string
} else if (strpos($message, 'does not exist!') !== false) {
$message = ""; //empty error string
}
else if (strpos($message, 'Sorry, it seems the coupon') !== false) {
$message = "";//empty error string
}
else if (strpos($message, 'Sorry, this coupon is not applicable to your cart contents') !== false) {
$message = "Sorry, the discount is not applicable to your cart contents"; //updated error string
}
?>
<li><?php echo wp_kses_post( $message ); ?></li>
<?php
break;
endforeach; ?>
</ul>
答案 1 :(得分:1)
我知道这是一个旧线程,但是我想我已经解决了优惠券错误消息的解决方法。
在我的商店中,我使用WooCommerce智能优惠券,该优惠券允许将优惠券作为礼品卡出售。我不希望人们能够使用礼品卡购买礼品卡,因此我已将礼品卡类别添加到了优惠券使用限制的排除类别列表中。
无论如何,如果购物车中有礼品卡时有人尝试使用礼品卡优惠券代码,我想更改错误消息。这是我使用的代码:
function filter_woocommerce_coupon_error( $err, $err_code, $instance ) {
if ( $err_code == '114' ) {
global $woocommerce;
$categories = $instance->get_excluded_product_categories();
if ( in_array( '15', $categories ) ) {
$err = sprintf( __( 'Sorry, you cannot use a Gift Card to purchase another Gift Card.' ) );
}
}
return $err;
};
add_filter( 'woocommerce_coupon_error', 'filter_woocommerce_coupon_error', 10, 3 );
可以在文件$err_code
中找到特定错误消息的woocommerce/includes/class-wc-coupon.php
。
就我而言,我想编辑错误代码为114(E_WC_COUPON_EXCLUDED_CATEGORIES)的错误消息。我还希望仅在购物车中的礼品卡触发114错误时显示我的自定义消息,而不是每114错误都出现。为了解决这个问题,我添加了if ( in_array( '15', $categories ) )
。这样做的目的是检查错误消息是否由类别15中的产品触发了(这是我商店的礼品卡类别。将15更改为所使用的类别)。
$instance
变量是WooCommerce用于将购物车/优惠券的详细信息传递回该函数的
我对编码非常陌生,因此,如果我的代码和解释不理想,很抱歉,但是它确实对我有用。我将其添加到functions.php
中。
答案 2 :(得分:0)
所以问题的症结在于 - 如何自定义WooCommerce优惠券消息?
我有半个答案 - 我使用&#34; woocommerce_coupon_message&#34;定制了优惠券消息(绿色盒装消息)。过滤。但是我还没有能够使用&#34; woocommerce_coupon_error&#34;来获取优惠券错误消息(红色框内的消息)。过滤。
我尝试过基于类WC_Cart的几种不同方法的条件语句,但无济于事。我似乎无法拦截&#34; (然后自定义)错误消息,然后再打印出来。如果某人有优惠券错误的解决方案,我很乐意听到它。
无论如何......下面的函数被挂钩到&#34; woocommerce_before_cart&#34; &安培; &#34; woocommerce_before_checkout_form&#34;动作,因此该功能适用于任一页面。
它显然可以自定义,但我的示例基本上测试有效的优惠券,然后您可以更改消息或不返回任何内容。您还可以测试其他条件,以提出各种自定义通知!比修改模板文件好多了! : - )
add_action( 'woocommerce_before_cart', 'custom_coupon_messages' );
add_action( 'woocommerce_before_checkout_form', 'custom_coupon_messages' );
function custom_coupon_messages() {
global $woocommerce;
//Set coupon codes.
$coupon_code = 'Bigly-Yuge';
//Set coupon objects.
$coupon_test = new WC_Coupon( 'Bigly-Yuge' );
//Get the cart subtotal. Should return as a Double.
$cart_subtotal = WC()->cart->subtotal;
//If coupon test is passed add coupon.
if ( $coupon_test->is_valid() && $woocommerce->cart->has_discount( $coupon_code ) ) {
//Filter the coupon success message to display a custom message.
add_filter( 'woocommerce_coupon_message', 'filter_woocommerce_coupon_message', 10, 3 );
function filter_woocommerce_coupon_message( $msg, $msg_code, $instance ) {
//Set a custom coupon message.
$msg_code = 'case self::WC_COUPON_SUCCESS';
$msg = __( 'You saved BIGLY YUGE!', 'woocommerce' );
return $msg;
return $msg_code;
//Or return nothing (no message will be displayed - comment out the above/uncomment below).
// return '';
};
//Print the above notice to screen.
wc_print_notices();
}
elseif ( $cart_subtotal > 499 ) {
//Print a notice (the blue boxed one)
wc_print_notice( 'Spend $500 to qualify for the BIGLY YUGE discount!!!', 'notice' );
}
}