Добавить соответствующее значение по умолчанию в поле, которое заполняется значением флажка WooCommerce - PullRequest
0 голосов
/ 29 августа 2018

На моей странице оформления заказа в WooCommerce у меня есть два способа доставки, и ниже этого поля custom delivery time, которое заполнено значением выбранного способа доставки . По умолчанию я установил значение в delivery time поле, которое является «Время доставки» опция.

Проблема заключается в том, что при загрузке страницы по умолчанию выбран один из способов доставки, а в поле выбора по-прежнему используется значение по умолчанию «Время доставки» . И чтобы получить действительные варианты, я должен проверить другой вариант и наоборот.
Я хочу заполнить поле delivery time соответствующим значением из shipping method, а не Срок доставки текст.

P.s: Я доволен сценарием выбора shipping method по умолчанию. И поле delivery time заполняется следующим образом.

Если выбрано «Экспресс», параметры должны быть такими.

  1. 13: 00 - 14: 00

Если выбрано Стандартное, опции будут такими.

  1. 13: 00-16: 00

enter image description here

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...