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 文件。已测试并有效。