Выборочная доставка в Woocommerce и проверка почтового индекса - PullRequest
0 голосов
/ 18 марта 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 );
}
...