优惠券通知通过使用JavaScript动态更新购物车来显示。移动wc\\u print\\u notices功能将不会生效,因为所有逻辑都放置在购物车中。js文件。您必须取消注册并退出WooCommerce购物车。js文件并添加您自己的修改版本。
/**
* Deregister and dequeue WooCommerce cart.js file and add own modified version.
*/
function wpse_305939_replace_woocommerce_cart_script() {
/**
* Remove default woocommerce cart scripts.
*/
wp_deregister_script( \'wc-cart\' );
wp_dequeue_script( \'wc-cart\' );
/**
* Add own modify scripts.
*/
wp_register_script( \'wc-cart\', plugin_dir_url( __FILE__ ) . \'js/cart.js\', array( \'jquery\', \'woocommerce\', \'wc-country-select\', \'wc-address-i18n\' ), WC_VERSION, true );
if( is_cart() ) {
wp_enqueue_script( \'wc-cart\' );
}
}
add_action( \'wp_enqueue_scripts\', \'wpse_305939_replace_woocommerce_cart_script\', 20 );
复制原始购物车。js完全连接到您的自定义购物车。js和update两种方法。
apply_coupon
/**
* Apply Coupon code
*
* @param {JQuery Object} $form The cart form.
*/
apply_coupon: function( $form ) {
block( $form );
var cart = this;
var $text_field = $( \'#coupon_code\' );
var coupon_code = $text_field.val();
var data = {
security: wc_cart_params.apply_coupon_nonce,
coupon_code: coupon_code
};
$.ajax( {
type: \'POST\',
url: get_url( \'apply_coupon\' ),
data: data,
dataType: \'html\',
success: function( response ) {
$( \'.woocommerce-error, .woocommerce-message, .woocommerce-info\' ).remove();
show_notice( response, $(\'.cart-collaterals\') );
$( document.body ).trigger( \'applied_coupon\', [ coupon_code ] );
},
complete: function() {
unblock( $form );
$text_field.val( \'\' );
cart.update_cart( true, false);
}
} );
}
以及
update_cart
/**
* Update entire cart via ajax.
*/
update_cart: function( preserve_notices, scroll_to_notices ) {
var $form = $( \'.woocommerce-cart-form\' );
block( $form );
block( $( \'div.cart_totals\' ) );
// Make call to actual form post URL.
$.ajax( {
type: $form.attr( \'method\' ),
url: $form.attr( \'action\' ),
data: $form.serialize(),
dataType: \'html\',
success: function( response ) {
update_wc_div( response, preserve_notices );
},
complete: function() {
scroll_to_notices = typeof scroll_to_notices !== \'undefined\' ? scroll_to_notices : true;
unblock( $form );
unblock( $( \'div.cart_totals\' ) );
if( scroll_to_notices ) {
$.scroll_to_notices( $( \'[role="alert"]\' ) );
}
}
} );
}
您可以通过将这两种方法与原始购物车进行比较来检查已更新的内容。js文件(WooCommerce 3.4.2)。
此解决方案仅适用于应用优惠券时的通知。