WooCommerce 结账时的本地取货自定义百分比折扣
Local pickup custom percentage discount in WooCommerce checkout
我正在使用 答案代码在 Woocommerce 上获得 2% 的本地提货折扣。因此,选择取货的人可以获得总金额的折扣。
这段代码很棒,但我想将它隐藏在购物车页面上,并且只显示在结帐页面上。现在它显示在两个页面上。
我尝试将 $cart
更改为 $checkout
并删除了规则 15 和 16,但不幸的是,这不起作用。有没有人指出我正确的方向。
要使其仅在结帐页面上有效,请使用以下内容:
add_action( 'woocommerce_cart_calculate_fees', 'custom_discount_for_pickup_shipping_method', 10, 1 );
function custom_discount_for_pickup_shipping_method( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Only on checkout page
if ( is_checkout() ) {
$percentage = 2; // <=== Discount percentage
$chosen_shipping_method_id = WC()->session->get( 'chosen_shipping_methods' )[0];
$chosen_shipping_method = explode(':', $chosen_shipping_method_id)[0];
// Only for Local pickup chosen shipping method
if ( strpos( $chosen_shipping_method_id, 'local_pickup' ) !== false ) {
// Calculate the discount
$discount = $cart->get_subtotal() * $percentage / 100;
// Add the discount
$cart->add_fee( __('Pickup discount') . ' (' . $percentage . '%)', -$discount );
}
}
}
代码进入您的活动子主题(活动主题)的 function.php 文件。已测试并有效。
我正在使用
我尝试将 $cart
更改为 $checkout
并删除了规则 15 和 16,但不幸的是,这不起作用。有没有人指出我正确的方向。
要使其仅在结帐页面上有效,请使用以下内容:
add_action( 'woocommerce_cart_calculate_fees', 'custom_discount_for_pickup_shipping_method', 10, 1 );
function custom_discount_for_pickup_shipping_method( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Only on checkout page
if ( is_checkout() ) {
$percentage = 2; // <=== Discount percentage
$chosen_shipping_method_id = WC()->session->get( 'chosen_shipping_methods' )[0];
$chosen_shipping_method = explode(':', $chosen_shipping_method_id)[0];
// Only for Local pickup chosen shipping method
if ( strpos( $chosen_shipping_method_id, 'local_pickup' ) !== false ) {
// Calculate the discount
$discount = $cart->get_subtotal() * $percentage / 100;
// Add the discount
$cart->add_fee( __('Pickup discount') . ' (' . $percentage . '%)', -$discount );
}
}
}
代码进入您的活动子主题(活动主题)的 function.php 文件。已测试并有效。