我有一个WordPress网站,使用WooCommerce插件。我想提供买家5%从购物车总减少,如果他们选择本地皮卡作为运输方式。我已经试过**- 5 * [数量]**,似乎不起作用。我也试过-0.95 * [cost],但没有成功第一节第一节第一节第一节第一次
ovfsdjhp1#
我正在使用WooCommerce 3,并通过在活动主题的function.php中编写一个函数来实现上述结果。
function prefix_add_discount_line( $cart ) { $chosen_methods = WC()->session->get( 'chosen_shipping_methods' ); $chosen_shipping_no_ajax = $chosen_methods[0]; if ( 0 === strpos( $chosen_shipping_no_ajax, 'local_pickup' ) ) { // Define the discount percentage $discount = $cart->subtotal * 0.05; // Add your discount note to cart $cart->add_fee( __( 'Collection discount applied', 'yourtext-domain' ) , -$discount ); } } add_action( 'woocommerce_cart_calculate_fees', 'prefix_add_discount_line');
ttcibm8c2#
下面的代码,将设置一个定义的折扣百分比在航运方法"本地皮卡"本身.您将需要使用简单的初始成本而不是您的公式来设置参考运费。例如,它可以是10,并将被代码折扣取代。您可能需要在"Shipping options"选项卡下的常规运输设置中选择"Enable debug mode",以暂时禁用运输缓存。代码 (您将设置您的折扣百分比):
10
add_filter('woocommerce_package_rates', 'local_pickup_percentage_discount', 12, 2); function local_pickup_percentage_discount( $rates, $package ){ if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return $rates; // HERE define the discount percentage $percentage = 5; // 5% $subtotal = WC()->cart->get_subtotal(); // Loop through the shipping taxes array foreach ( $rates as $rate_key => $rate ){ $has_taxes = false; // Targetting "flat rate" if( 'local_pickup' === $rate->method_id ){ // Add the Percentage to the label name (otional $rates[$rate_key]->label .= ' ( - ' . $percentage . '% )'; // Get the initial cost $initial_cost = $new_cost = $rates[$rate_key]->cost; // Calculate new cost $new_cost = -$subtotal * $percentage / 100; // Set the new cost $rates[$rate_key]->cost = $new_cost; // Taxes rate cost (if enabled) $taxes = []; // Loop through the shipping taxes array (as they can be many) foreach ($rates[$rate_key]->taxes as $key => $tax){ if( $rates[$rate_key]->taxes[$key] > 0 ){ // Get the initial tax cost $initial_tax_cost = $new_tax_cost = $rates[$rate_key]->taxes[$key]; // Get the tax rate conversion $tax_rate = $initial_tax_cost / $initial_cost; // Set the new tax cost $taxes[$key] = $new_cost * $tax_rate; $has_taxes = true; // Enabling tax } } if( $has_taxes ) $rates[$rate_key]->taxes = $taxes; } } return $rates; }
代码进入您的活动子主题(或活动主题)的function.php文件。别忘了禁用"启用调试模式"选项在航运设置。
2条答案
按热度按时间ovfsdjhp1#
我正在使用WooCommerce 3,并通过在活动主题的function.php中编写一个函数来实现上述结果。
ttcibm8c2#
下面的代码,将设置一个定义的折扣百分比在航运方法"本地皮卡"本身.
您将需要使用简单的初始成本而不是您的公式来设置参考运费。例如,它可以是
10
,并将被代码折扣取代。您可能需要在"Shipping options"选项卡下的常规运输设置中选择"Enable debug mode",以暂时禁用运输缓存。
代码 (您将设置您的折扣百分比):
代码进入您的活动子主题(或活动主题)的function.php文件。
别忘了禁用"启用调试模式"选项在航运设置。