How to add product in woocommerce with php code

I want to add products with PHP code like below:

$post_information = array(
  'post_title' => 'new item shop',
  'post_content' => 'this is new item shop',
  'post_type' => 'post',
  'post_status' => 'publish'
);
$post_id = wp_insert_post($post_information);

but this code optimize for WooCommerce such as post type and guid and metadata and… Can someone help?

Related posts

1 comment

  1. The method below is now out of date as WooCommerce have added the wc_product_meta_lookup table which also needs to be updated with some of the meta values.

    Woo have now provided a CRUD interface so use that instead.

                $post_id = wp_insert_post( array(
                    'post_title' => $title,
                    'post_type' => 'product',
                    'post_status' => 'publish',
                    'post_content' => $body,
                ));
                $product = wc_get_product( $post_id );
                $product->set_sku( $sku );
                // etc...
                $product->save();
    

    Reviewer, please feel free to edit as you see fit.


    Its pretty easy one you have worked out the data added in the post meta. Trouble I am having is adding downloadable products to the store.

    below is the code i am using it lists all the post meta that is used by woo commerce. This publishes a product however the download link will not attach.

    Originally when i started i made an error with the array that stores the download link producing a bad link “b” followed by a second download file that was correct. After fixing the array to match that of a product manually added it no loner will show a file. If anyone has info on this it would be greatly appreciated

    $post = array(
        'post_author' => $user_id,
        'post_content' => '',
        'post_status' => "publish",
        'post_title' => $product->part_num,
        'post_parent' => '',
        'post_type' => "product",
    );
    
    //Create post
    $post_id = wp_insert_post( $post, $wp_error );
    if($post_id){
        $attach_id = get_post_meta($product->parent_id, "_thumbnail_id", true);
        add_post_meta($post_id, '_thumbnail_id', $attach_id);
    }
    
    wp_set_object_terms( $post_id, 'Races', 'product_cat' );
    wp_set_object_terms( $post_id, 'simple', 'product_type');
         
    update_post_meta( $post_id, '_visibility', 'visible' );
    update_post_meta( $post_id, '_stock_status', 'instock');
    update_post_meta( $post_id, 'total_sales', '0');
    update_post_meta( $post_id, '_downloadable', 'yes');
    update_post_meta( $post_id, '_virtual', 'yes');
    update_post_meta( $post_id, '_regular_price', "1" );
    update_post_meta( $post_id, '_sale_price', "1" );
    update_post_meta( $post_id, '_purchase_note', "" );
    update_post_meta( $post_id, '_featured', "no" );
    update_post_meta( $post_id, '_weight', "" );
    update_post_meta( $post_id, '_length', "" );
    update_post_meta( $post_id, '_width', "" );
    update_post_meta( $post_id, '_height', "" );
    update_post_meta( $post_id, '_sku', "");
    update_post_meta( $post_id, '_product_attributes', array());
    update_post_meta( $post_id, '_sale_price_dates_from', "" );
    update_post_meta( $post_id, '_sale_price_dates_to', "" );
    update_post_meta( $post_id, '_price', "1" );
    update_post_meta( $post_id, '_sold_individually', "" );
    update_post_meta( $post_id, '_manage_stock', "no" );
    update_post_meta( $post_id, '_backorders', "no" );
    update_post_meta( $post_id, '_stock', "" );
    
    // file paths will be stored in an array keyed off md5(file path)
    $downdloadArray =array('name'=>"Test", 'file' => $uploadDIR['baseurl']."/video/".$video);
        
    $file_path =md5($uploadDIR['baseurl']."/video/".$video);
        
        
    $_file_paths[  $file_path  ] = $downdloadArray;
    // grant permission to any newly added files on any existing orders for this product
    // do_action( 'woocommerce_process_product_file_download_paths', $post_id, 0, $downdloadArray );
    update_post_meta( $post_id, '_downloadable_files', $_file_paths);
    update_post_meta( $post_id, '_download_limit', '');
    update_post_meta( $post_id, '_download_expiry', '');
    update_post_meta( $post_id, '_download_type', '');
    update_post_meta( $post_id, '_product_image_gallery', '');
    

    hope this conforms to the quality standard 🙂

Comments are closed.