Ich versuche, eine benutzerdefinierte Gebühr auf die Bestellung insgesamt beim Auschecken anzuzeigen. Ich habe eine Checkbox innerhalb WooCommerce hinzugefügtWoocommerce benutzerdefinierte Checkout-Feld, um Gebühr zu bestellen Ajax
add_action('woocommerce_after_checkout_billing_form', 'add_box_option_to_checkout');
function add_box_option_to_checkout($checkout) {
echo '<div id="message_fields">';
woocommerce_form_field('add_gift_box', array(
'type' => 'checkbox',
'class' => array('add_gift_box form-row-wide'),
'label' => __('Ilość pudełek ozdobnych - 25 PLN/szt'),
'placeholder' => __(''),
), $checkout->get_value('add_gift_box'));
}
eine benutzerdefinierte js-Datei enthalten, die das Ereignis
jQuery(document).ready(function($) {
$('#add_gift_box').click(function(){
var data = {
action: 'woocommerce_add_gift_box',
state: '200',
};
jQuery.ajax({
type: 'POST',
url: wc_checkout_params.ajax_url,
data: data,
success: function (code) {
console.log(code);
jQuery('body').trigger('update_checkout');
},
dataType: 'html'
});
});
});
Und ein PHP-Gebühr Handhabung Funktion
function woo_add_cart_fee($data){
if (is_admin() && ! defined('DOING_AJAX') || ! $_POST) return;
$extracost = 0;
if (isset($_POST['state'])) {
$extracost = intval($_POST['state']);
}
WC()->cart->add_fee('Ozdobne pudełka:', $extracost);
}
add_action('woocommerce_cart_calculate_fees', 'woo_add_cart_fee');
add_action('wp_ajax_woocommerce_add_gift_box', 'woo_add_cart_fee', 10);
add_action('wp_ajax_nopriv_woocommerce_add_gift_box', 'woo_add_cart_fee', 10);
das Aus irgendwelchen Gründen behandeln schould Wert von $ _POST ['state'] wird nicht hinzugefügt, die Funktion funktioniert, wenn ich einen hart codierten Wert gebe, habe ich viele Optionen ausprobiert, aber kann nicht funktionieren.
Ich habe ähnliche Beiträge gesehen, aber keiner von ihnen hatte die Antwort.
Haben Sie das jemals herausgefunden? – David
Noch nicht - Ich werde ein Update posten, wenn ich die Antwort finde, jetzt habe ich das Checkout Adons Plugin verwendet, um dies zu erreichen – adam