/** * Plugin Name: Egypt cities weight based shipping * Author: Abdullah Zouhair * Description: Add Weight based shipping to Egypt cities * Version: 0.2.0 * License: GPL2 or later * License URL: http://www.gnu.org/licenses/gpl-2.0.txt * text-domain: eg-cities-for-woocommerce */ defined('ABSPATH') or die('Please get proper access'); // check if woocommerce is active if (!in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins')))) { exit; } add_action('plugins_loaded', 'check_for_wc_city_select_active'); function is_woocommerce_shipping_settings() { $woocommerce_shipping_settings_path = wp_parse_url(get_admin_url( null, '/admin.php?page=wc-settings&tab=shipping'), PHP_URL_PATH); $current_url = "//$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; return ($woocommerce_shipping_settings_path !== null && $current_url !== null && str_contains($current_url, '/admin.php?page=wc-settings&tab=shipping') ); } function add_custom_states_at_checkout_or_for_weight_based_shipping_plugin() { if (!is_woocommerce_shipping_settings()) { add_filter('woocommerce_states', 'eg_custom_shipping_zones'); } else { add_filter('woocommerce_states', 'eg_custom_shipping_zones_for_weight_based_shipping_plugin'); } } function check_for_wc_city_select_active() { if (!class_exists('WC_City_Select')) { add_action('admin_notices', 'notice_wc_city_select_activate'); return; } add_filter('woocommerce_ship_to_different_address_checked', '__return_false'); add_action('init', 'add_custom_states_at_checkout_or_for_weight_based_shipping_plugin'); // This hook controls both billing and shipping fields at the same time add_filter('woocommerce_default_address_fields', 'eg_custom_change_state_field_order'); add_filter('wc_city_select_cities', 'eg_custom_my_cities'); } function notice_wc_city_select_activate() { $message = sprintf(__('Egypt cities weight based shipping for Woocommerce requires the WC City Select plugin to be active', 'states-and-cities-for-woocommerce'), 'https://wordpress.org/plugins/wc-city-select/'); printf('

%s

', $message); } function eg_custom_change_state_field_order($address_fields) { // as you can see, no needs to specify a field group anymore $address_fields['state']['priority'] = 65; unset($address_fields['company']); unset($address_fields['postcode']); return $address_fields; } function eg_custom_my_cities($cities) { // كل المحافظات الحالية $cities['EG'] = array( 'القاهرة' => array( 'القاهرة', // ← إضافة المحافظة نفسها كاختيار رئيسي 'التجمعات', 'العاشر من رمضان', 'الرحاب', 'الزاويه الحمرا', 'الزمالك', 'السيده زينب', 'الشروق', 'العبور', 'العباسية', 'القرية الذكيه', 'القطاميه', 'المرج', 'المطريه', 'المعادى دائري', 'المعادى', 'المقطم', 'المنيل', 'النزهة', 'النزهة الجديدة', 'باب الشعرية', 'جاردن سيتي', 'جسر السويس', 'حدايق المعادي', 'حدايق القبة', 'حدايق الزيتون', 'حلميه الزيتون', 'حلوان', 'حدائق حلوان', 'دار السلام', 'زهراء المعادى', 'شبرا مصر', 'شيراتون', 'عين شمس', 'مايو 15', 'مدينة الفسطاط بمصر القديمة', 'مدينتى', 'مدينه نصر', 'مصر الجديده', 'وسط البلد', 'شبرا الخيمه', 'مدينة السلام', 'مدينه بدر', 'اوسيم', 'الصف', ), 'الجيزة' => array( 'الجيزة', // ← إضافة المحافظة نفسها كاختيار رئيسي 'اطفيح', 'الشيخ زايد', 'اكتوبر', 'البدرشين', 'الحوامديه', 'الدقى', 'المنيب', 'المهندسين', 'الهرم', 'الوراق', 'امبابه', 'حدائق الاهرام', 'فيصل', 'كرداسه' ), // باقي المحافظات زي ما هي (من غير تعديل) 'أسيوط' => array('أسيوط'), 'الإسكندرية' => array('الإسكندرية'), 'الإسماعيلية' => array('الإسماعيلية'), 'أسوان' => array('أسوان'), 'الأقصر' => array('الأقصر'), 'البحيرة' => array('البحيرة'), 'الدقهلية' => array('الدقهلية'), 'الساحل الشمالي' => array('الساحل الشمالي'), 'السويس' => array('السويس'), 'الشرقية' => array('الشرقية'), 'الغربية' => array('الغربية'), 'دمياط' => array('دمياط'), 'الغردقه (استلام من مكتب الشحن)' => array('الغردقه (استلام من مكتب الشحن)'), 'الغردقه (استلام بالمنزل)' => array('الغردقه (استلام بالمنزل)'), 'الفيوم' => array('الفيوم'), 'القليوبية' => array('القليوبية'), 'المنوفية' => array('المنوفية'), 'المنيا' => array('المنيا'), 'بني سويف' => array('بني سويف'), 'بورسعيد' => array('بورسعيد'), 'سوهاج' => array('سوهاج'), 'شرم الشيخ (استلام من مكتب الشحن )' => array('شرم الشيخ (استلام من مكتب الشحن )'), 'شرم الشيخ ( استلام بالمنزل )' => array('شرم الشيخ ( استلام بالمنزل )'), 'قنا' => array('قنا'), 'كفرالشيخ' => array('كفرالشيخ'), 'مرسي علم' => array('مرسي علم'), 'مرسي مطروح' => array('مرسي مطروح'), ); return $cities; }