嘗試在 woocommerce 中建立郵遞區號驗證。
我無法讓我的查詢查看像 10000-000...15000-000 這樣的範圍間隔。
我的查詢適用於簡單的郵遞區號(10000-000 或 11001-001),但不適用於郵遞區號範圍。
global $wpdb; $tabela_cep = $wpdb->prefix . 'woocommerce_shipping_zone_locations'; $query = "SELECT location_code FROM $tabela_cep WHERE location_code = %s LIMIT 1"; $resultado = $wpdb->get_var($wpdb->prepare($query, $cep));
我不知道 woocommerce 如何在資料庫中儲存所有運輸區域的所有範圍。
我嘗試過“ Between”sintax來過濾字段locationcode和locationcode2,但我不確定這是否是正確的字段名稱/表名稱,甚至是否有其他方法可以實現這個。
global $wpdb; $tabela_cep = $wpdb->prefix . 'woocommerce_shipping_zone_locations'; $query = "SELECT location_code FROM $tabela_cep WHERE %s BETWEEN CAST(location_code AS UNSIGNED) AND CAST(location_code2 AS UNSIGNED) LIMIT 1"; $resultado = $wpdb->get_var($wpdb->prepare($query, $cep));
謝謝
P粉8721820232023-09-09 00:12:19
我不知道這是否有幫助,但已經有一個名為 wc_postcode_location_matcher() 的核心 WooCommerce 函數,可以檢查給定的郵遞區號是否在郵遞區號範圍內。
您首先需要計算 $postcode_locations:
global $wpdb; $postcode_locations = $wpdb->get_results( "SELECT zone_id, location_code FROM {$wpdb->prefix}woocommerce_shipping_zone_locations WHERE location_type = 'postcode';" );
然後您需要 $country,因此如果您在結帳頁面上:
$country = WC()->customer->get_billing_country();
...或如果您正在驗證訂單:
$country = $order->get_billing_country();
那你就可以開始了:
$matches = wc_postcode_location_matcher( $postcode, $postcode_locations, 'zone_id', 'location_code', $country ); return $matches; // if empty there is no match