как добавить обработчик условно настраиваемого поля на странице оформления заказа? - PullRequest
0 голосов
/ 07 марта 2020

При выборе опции отсюда, появится другое поле ввода. Проверка почтового индекса. Если почтовый индекс подтвержден, будет добавлена ​​плата. Теперь выберите вариант в поле выбора, сборы будут добавлены. Я хочу, чтобы выберите опцию и после того, как почтовый индекс Доступен, будет добавлена ​​плата. Как мне это сделать?

Это HTML код:

<select name="chosen_packing" id="chosen_packing" class="select " data-allow_clear="true" data-placeholder="Choose a packing option ...">
    <option value="" selected="selected">Choose a packing option ...</option>
    <option value="bag">Driver Delivery ($22.00)</option>
    <option value="box">Couriar Delivery ($33.00)</option>
</select>
<input style="display: none;" type="text" placeholder="Zipcode check" name="zipcode" id="ddo">
<input style="display: none;" type="text" name="state" id="cdo">
if(isset($_POST['zipcode'])){
  $zipcode = $_POST['zipcode'];
 global $wpdb;
  $query = "select * from wp_woocommerce_shipping_zone_locations where location_code = '$zipcode'";
  $result = mysqli_query($con,$query);
  if(mysqli_num_rows($result) != 1){
    $response = "<span style='color: red;'>zip code Not Available.</span>";
  }else{

      $response = "<span style='color: green;'>zip code Available.</span>";
  }
  echo $response;
  die;
}


   // Add a custom dynamic packaging fee
add_action( 'woocommerce_cart_calculate_fees', 'add_packaging_fee', 20, 1 );
function add_packaging_fee( $cart) {
   if ( is_admin() && ! defined( 'DOING_AJAX' ) )
       return;

   $domain      = "woocommerce";
   $packing_fee = WC()->session->get( 'chosen_packing' ); // Dynamic packing fee

   if ( $packing_fee === 'bag' ) {
       $label = "Driver Delivery";
       $cost  = 22;

   } elseif ( $packing_fee === 'box' ) {
       $label = __("Courier Delivery", $domain);
       $cost  = 33;
   }

   if ( isset($cost) )
       $cart->add_fee( $label, $cost );
}

// Field validation, as this packing field is required
add_action('woocommerce_checkout_process', 'packing_field_checkout_process');
function packing_field_checkout_process() {
   // Check if set, if its not set add an error.
   if ( isset($_POST['chosen_packing']) && empty($_POST['chosen_packing']) )
       wc_add_notice( __( "Please choose a packing option...", "woocommerce" ), 'error' );
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...