На моей странице оформления заказа в WooCommerce у меня есть два способа доставки, и ниже этого поля custom delivery time
, которое заполнено значением выбранного способа доставки . По умолчанию я установил значение в delivery time
поле, которое является «Время доставки» опция.
Проблема заключается в том, что при загрузке страницы по умолчанию выбран один из способов доставки, а в поле выбора по-прежнему используется значение по умолчанию «Время доставки» . И чтобы получить действительные варианты, я должен проверить другой вариант и наоборот.
Я хочу заполнить поле delivery time
соответствующим значением из shipping method
, а не Срок доставки текст.
P.s: Я доволен сценарием выбора shipping method
по умолчанию. И поле delivery time
заполняется следующим образом.
Если выбрано «Экспресс», параметры должны быть такими.
- 13: 00 - 14: 00
Если выбрано Стандартное, опции будут такими.
- 13: 00-16: 00

add_action( 'woocommerce_review_order_after_shipping', 'checkout_shipping_additional_field', 20 );
function checkout_shipping_additional_field( )
{
$domain = 'rahat.al';
$default = 'option 1';
echo '<tr class="additional-shipping-fields"><th>' . __('Delivery Time', $domain) . '</th><td>';
// Add a custom checkbox field
woocommerce_form_field( 'custom_radio_field', array(
'type' => 'select',
'class' => array( 'form-row-wide' ),
'options' => array(
'option 1' => __('Delivery Time ', $domain),
),
'default' => $default,
), $default );
echo '</td></tr>';
}
//function that gets the Ajax data
add_action( 'wp_ajax_woo_get_ajax_data', 'woo_get_ajax_data' );
add_action( 'wp_ajax_nopriv_woo_get_ajax_data', 'woo_get_ajax_data' );
function woo_get_ajax_data() {
$string = "shipping_method[0]";
// $val = substr($string, 0, strlen("shipping_method")) === "shipping_method";
if ( $_POST['shipping_method'] == '1' ){
WC()->session->set('flat_rate', '1' );
} else {
WC()->session->set('shipping_method', '0' );
}
echo json_encode( WC()->session->get('shipping_method' ) );
die(); // Alway at the end (to avoid server error 500)
}
add_action( 'wp_footer', 'custom_checkout_script' );
function custom_checkout_script() {
?>
<script type="text/javascript">
jQuery('form.checkout').on('change','input[name^="shipping_method"]',function($) {
var checked = 0;
var val = jQuery(this).val();
if (val.match("^flat_rate")) {
var checked = 1;
jQuery.ajax({
type: 'POST',
url: wc_checkout_params.ajax_url,
data: {
'action': 'woo_get_ajax_data',
'input[value^="flat_rate"]': checked,
},
success: function (result) {
var d = new Date();
jQuery('#custom_radio_field').empty();
var count = ( 21 - d.getHours() ) / 3
var count_floor = Math.floor(count);
console.log(count_floor);
for (var i = 0; i < count_floor*3; i=i+3) {
var minutes = d.getMinutes();
var hour = d.getHours()+i;
var stHour = hour + 3;
jQuery('#custom_radio_field').append('<option >'+ hour + ":" + minutes + " - "+stHour+ ":"+minutes+'</option>');
}
},
error: function(error){
console.log(error); // just for testing
}
});
} else {
console.log("heree");
var checked = 1;
jQuery.ajax({
type: 'POST',
url: wc_checkout_params.ajax_url,
data: {
'action': 'woo_get_ajax_data',
'input[value^="wcsdm3"]': checked,
},
success: function (result) {
var d = new Date();
jQuery('#custom_radio_field').empty();
var count = 21 - d.getHours()
var count_floor = Math.floor(count);
console.log(count_floor);
for (var i = 0; i < count_floor; i++) {
var minutes = d.getMinutes();
var hour = d.getHours()+i;
var stHour = hour+1;
if(stHour != 21 ){
jQuery('#custom_radio_field').append('<option >'+ hour + ":" + minutes + " - "+stHour+ ":"+minutes+'</option>');
}
}
},
error: function(error){
console.log(error); // just for testing
}
});
}
});
</script>
<?php
}