A client needed to add “something” upon product publishing. For example, product meta key “total_sales” with value = 0 gets added automatically once a WooCommerce product is created.
So, how do we run (“hook”) our function when a new product is published?
PHP Snippet: Add Custom Meta When a Product is Published
In here we trigger our function when a product goes from a non-published status (‘draft’, ‘pending’, ‘private’, ‘future’) to ‘publish’ status.
/**
* @snippet Hook into product publishing
* @how-to Get CustomizeWoo.com FREE
* @author Rodolfo Melogli
* @compatible WooCommerce 6
* @community https://businessbloomer.com/club/
*/
add_action( 'transition_post_status', 'bbloomer_add_custom_meta_on_publish_product', 9999, 3 );
function bbloomer_add_custom_meta_on_publish_product( $new_status, $old_status, $post ) {
if ( 'product' === $post->post_type && 'publish' === $new_status && 'publish' !== $old_status ) {
update_post_meta( $post->ID, 'total_amount', '0' );
}
}
I tried your code and i had a problem. It runs only when i go to products and click add new and as a result $post returns an object with empty properties. When i publish my product it doesn’t do anything. Am i doing something wrong?
Hi there, try this new version and let me know
after publish, if we turn product published to draft for some time & publish again
function re run.
can we limit it to run once only.
not everytime for same product that got published in past.
Hi Arun thanks so much for your comment! Yes, this is definitely possible, but I’m afraid it’s custom work. If you’d like to get a quote, feel free to contact me here. Thanks a lot for your understanding!
Good snippet, however you’ll probably want to add a quick check for the post type:
if ($post->post_type != ‘product’) return;
Otherwise you’ll end up adding extra meta data for all posts, including non-products.
Brilliant, thank you Joshua:)
Hi Rodolfo,
Is there any way to utilise this code snippet to notify authors when their products have been published? I am using woocommerce to sell books, and the books are uploaded by authors. I have set that Woocommerce products allow for authors on the product page, but I am struggling to notify them once their product has been published.
I would love any help you can offer.
Thank you so much.
Ronel, thanks for your comment!
The answer to your question is: YES, of course. Everything is possible – it’s just a matter of understanding what’s the most time- and cost-effective way to do it ๐ I can develop this for you if you’re interested – simply contact me at infoATbusinessbloomer.com