Я создал два варианта доставки на странице оформления заказа. Водитель и Курьер. Я установил две разные цены для них и установил два разных набора почтового индекса из бэкэнда. Я пытаюсь реализовать проверку. Поэтому, когда пользователь выбирает один из вариантов доставки и вводит почтовый индекс, он должен сверяться с почтовыми индексами, добавленными из серверной части. Если проверка сделана, тогда она обновит цену.
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 );
}