• 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.