How to programmatically set product image from an URL with Woocommerce ?
Upload an image to a product with a UI in woocommerce
is very easy but in PHP it’s more difficult.
So for the need that i’ve to connect Pimcore to Woocommerce, I must import product catalog into Woocommerce by an interface.
So how to upload the image from an url ?
In first you need to have your product ID or variation id and get it in your code.
If your are not familiar with product and variation, a product is a collection of variation, in other term, a car can be in blue,black or red. The colors are the variations and the product is the car.
For this post, i will use 1234 for my product variation id.
After that you need in first to download your image into your local filesystem
In my example I save the logo of my website as logo.png but you should adapt to the correct mimetype and name of your file.
Next we will need to create an array with a name (the name of the file) and a tmp_name that correspond to the path of the file previously downloaded.
To finish we will use the media_handle_sideload
function to save our file with our product.
After we set the image id returned by the function into the product object and we save the object.
If you want to run this job in a cron for a daily update of your catalog, do not forget to delete the old image with wp_delete_attachment
!