對於那些運輸方式,我想有: - 「免費送貨」僅適用於貨到付款(COD)付款方式(我剛更名爲它到其他標籤,但我正在使用COD網關)。 - 其他支付網關的「統一費率」(當然不包括COD支付方式)。如何使特定支付網關免費送貨woocommerce
我的問題:如何選擇特定支付網關時免費送貨?
例如像在這個截圖:
類似的懸而未決的問題:Woocommerce free shipping based on payment gateway selected
對於那些運輸方式,我想有: - 「免費送貨」僅適用於貨到付款(COD)付款方式(我剛更名爲它到其他標籤,但我正在使用COD網關)。 - 其他支付網關的「統一費率」(當然不包括COD支付方式)。如何使特定支付網關免費送貨woocommerce
我的問題:如何選擇特定支付網關時免費送貨?
例如像在這個截圖:
類似的懸而未決的問題:Woocommerce free shipping based on payment gateway selected
WooCommerce要求航運網關之前選擇,這是COD是如何工作的,因爲它檢查如果在提供COD作爲選項之前選擇啓用的送貨方式。所以如果COD方法不適用於你,那麼沒有其他辦法可以實現這一點,因爲你要求結賬過程從它的設計方式向後工作。
由於WooCommerce的工作方式,一旦選擇了支付網關,您就無法修改送貨。您只能在每個網關的代碼中添加額外費用。
一段時間考慮這個問題後,我得到了好奇,我想我不得不一齣戲,看它是否是忠實地是不可能的。事實證明,有一點粗的黑客其實你可以得到這個工作,這裏是一個基本的插件,能完成這個任務:
<?php
/**
* Plugin Name: Free Shipping For BACS
* Description: Makes shipping for BACS free.
* Version: 0.0.1
* Author: Kodaloid
* Requires at least: 4.4
* Tested up to: 4.8
*/
if (!defined('ABSPATH')) exit;
add_action('init', 'fg_init');
function fg_init() {
add_action('woocommerce_cart_calculate_fees', 'fg_add_fee');
add_action('wp_footer', 'fg_footer', 9999);
}
function fg_footer() {
?>
<script type="text/javascript">
jQuery(function($) {
setInterval(function() {
$(".input-radio[name='payment_method']").off().change(function() {
console.log('triggered');
jQuery('body').trigger('update_checkout');
});
}, 500);
});
</script>
<?php
}
function fg_add_fee($the_cart) {
global $woocommerce;
if ($woocommerce->session->chosen_payment_method == 'bacs') {
$woocommerce->cart->add_fee('Free Shipping For BACS', -($the_cart->shipping_total), true, 'standard');
}
}
保存上面的代碼爲free_shipping_for_bacs.php和安裝插件使用WordPress中的上傳插件功能。
基本上這是檢查會話以查看哪個付款方式已被選中,然後如果選擇bacs
方法增加一個費用,減去運費的總和。這是有效的,但是因爲購物車使用AJAX進行更新,每次付款方式發生變化時,您都需要觸發JavaScript中附加到主體的update_checkout
事件,以便查看上述購物車中反映的更改。
因此,我添加了一個循環,每500ms重新添加更改處理程序到頁腳事件(如果您的主題沒有實現wp_footer鉤子,請確保添加它),這可以並應該改進如果您決定使用此代碼,因爲有更好的方法來檢查更改事件是否需要重新添加,這只是我今天沒有太多時間。當你開始說你要「現金上傳遞選項設置爲免費送貨」,並在年底你說的恰恰相反......請澄清
幸田來未
東西是你的問題非常不清楚。謝謝。 – LoicTheAztec
不好意思,但爲了簡單起見,我發現這個問題與我的一樣https://stackoverflow.com/questions/23106558/woocommerce-free-shipping-based-on-payment-gateway-selected –