Woocommerce 2.6 new features
-
While trying to add 120 shippnig zones with specific shippnig methods for each one by my specific plugin I’ve gor Apache|MySQL errors in log:
Mon Aug 22 17:39:34 2016] [warn] [client 5.19.1.112] mod_fcgid: stderr: \t \tFROM bip_woocommerce_shipping_table_rates as rate, referer: https://esliff.ru/wp-admin/
[Mon Aug 22 17:39:34 2016] [warn] [client 5.19.1.112] mod_fcgid: stderr: \t \tLEFT JOIN bip_woocommerce_shipping_zone_shipping_methods methods ON(rate.shipping_method_id = methods.shipping_method_id), referer: https://esliff.ru/wp-admin/
[Mon Aug 22 17:39:34 2016] [warn] [client 5.19.1.112] mod_fcgid: stderr: \t \tLEFT JOIN bip_woocommerce_shipping_zones zone ON(zone.zone_id = methods.zone_id), referer: https://esliff.ru/wp-admin/
Me code is simple$available_zones = WC_Shipping_Zones::get_zones(); // Get all WC Countries //$all_countries = WC()->countries->get_countries(); //Array to store available names $available_zones_names = array(); // Add each existing zone name into our array foreach ($available_zones as $zone ) { if( !in_array( $zone['zone_name'], $available_zones_names ) ) { $available_zones_names[] = $zone['zone_name']; } } unset($available_zones); $row = 0; $handle=fopen(plugins_url( 'cdek5.csv' , __FILE__ ), "r"); while (!feof($handle)) { $data[$row] = explode(";" , fgets($handle, 14096)); $row++; } fclose($handle); //var_dump ($data); if ( in_array( $data[0][0], $available_zones_names ))goto ending ; for ($i = 0; $i < $row; $i++) { if( ! in_array( $data[$i][0], $available_zones_names )){ // Create an empty object $zone_new = new stdClass(); //Add null attributes // $zone_new->zone_id = null; // $zone_new->zone_order =null; // Add shipping zone name $zone_new->zone_name = $data[$i][0]; // Instantiate a new shipping zone with our object $new_zone_new = new WC_Shipping_Zone( $zone_new ); // Add Croatia as location $new_zone_new->add_location( $data[$i][3], 'postcode' ); // Save the zone, if non existent it will create a new zone $new_zone_new->save(); $available_zones_names[]= $data[$i][0]; } else { $available_zones = WC_Shipping_Zones::get_zones(); // Get all WC Countries //Array to store available names // Add each existing zone name into our array foreach ($available_zones as $zone ) { if ( $data[$i][0] == $zone['zone_name']) { $curr_id = $zone['zone_id']; break; } } unset($available_zones); $new_zone_new = WC_Shipping_Zones::get_zone ($curr_id); } if (!empty($data[$i][4])){ $my_instance = $new_zone_new->add_shipping_method( 'My_pvz' ); $my_method= new My_PVZ_delivery($my_instance); $my_method->instance_settings['cost'] = $data[$i][4]; $my_method->instance_settings['title'] = 'Курьерская до двери'; update_option( $my_method->get_instance_option_key(), $my_method->instance_settings ); } if (!empty($data[$i][5])){ $my_instance=$new_zone_new->add_shipping_method( 'My_pvz' ); $my_method= new My_PVZ_delivery($my_instance); $my_method->instance_settings['cost'] = $data[$i][5]; $my_method->instance_settings['title'] = 'Самовывоз: '. $data[$i][2]; update_option( $my_method->get_instance_option_key(), $my_method->instance_settings ); } // Add our shipping method to that zone } //цикл перебора строк ending:
- The topic ‘Woocommerce 2.6 new features’ is closed to new replies.