woocommerce_cart_calculate_fees
アクションフックにフックされたこのカスタム関数を使用すると、定義された支払方法に対して15%の割引を適用できます。
この機能では、実際の支払い方法ID (「bacs」、「cod」、「check」または「paypal」など)を設定する必要があります。
2番目の機能は、お支払い方法が選択されるたびにチェックアウトデータを更新します。
コード:
add_action('woocommerce_cart_calculate_fees','shipping_method_discount', 20, 1);
function shipping_method_discount($cart_object) {
if (is_admin() && ! defined('DOING_AJAX')) return;
// HERE Define your targeted shipping method ID
$payment_method = 'bacs';
// The percent to apply
$percent = 15; // 15%
$cart_total = $cart_object->subtotal_ex_tax;
$chosen_payment_method = WC()->session->get('chosen_payment_method');
if($payment_method == $chosen_payment_method){
$label_text = __("Shipping discount 15%");
// Calculation
$discount = number_format(($cart_total/100) * $percent, 2);
// Add the discount
$cart_object->add_fee($label_text, -$discount, false);
}
}
add_action('woocommerce_review_order_before_payment', 'refresh_payment_methods');
function refresh_payment_methods(){
// jQuery code
?>
<script type="text/javascript">
(function($){
$('form.checkout').on('change', 'input[name^="payment_method"]', function() {
$('body').trigger('update_checkout');
});
})(jQuery);
</script>
<?php
}
コードは、あなたのアクティブな子のテーマ(またはアクティブテーマ)のfunction.phpファイルになります。
テスト済みで動作します。
美しく、まさに私が求めていたものです。ロイックありがとう! –