Add main product image from url to woocomerce php code


public function AddImage($file, $post_id,$desc = null){
  require_once(ABSPATH . 'wp-admin/includes/media.php');
  require_once(ABSPATH . 'wp-admin/includes/file.php');
  require_once(ABSPATH . 'wp-admin/includes/image.php'); 
  
  $file = "http://".$file;
   
  if ( ! empty( $file ) ) {
 
                 // Set variables for storage, fix file filename for query strings.
                 preg_match( '/[^\?]+\.(jpe?g|jpe|gif|png)\b/i', $file, $matches );
                 if ( ! $matches ) {
                         return new WP_Error( 'image_sideload_failed', __( 'Invalid image URL' ) );
                 }
 
                 $file_array = array();
                 $file_array['name'] = basename( $matches[0] );
 
                 // Download file to temp location.
                 $file_array['tmp_name'] = download_url( $file );
 
                 // If error storing temporarily, return the error.
                 if ( is_wp_error( $file_array['tmp_name'] ) ) {
                         return $file_array['tmp_name'];
                 }
 
                 // Do the validation and storage stuff.
                 $id = media_handle_sideload( $file_array, $post_id, $desc );
 
                 // If error storing permanently, unlink.
                 if ( is_wp_error( $id ) ) {
                         @unlink( $file_array['tmp_name'] );
                         return $id;
                 }
       
     set_post_thumbnail($post_id, $id);
                 
         }

  
 }
$file is source URL of the image. Remove http:// from the URL before sending. for e.g google.com/apple.jpg not http://google.com/apple.jpg. You can add www. but not http://. $post_id is the id of the post you want to update. call this function from anywhere with postid and image url

Popular posts from this blog

What are sales territory in Netsuite?

How to get and set a sublist in netsuite suitlet suitescript 2.0