I ran yesterday into a situation where I needed WordPress to perform a specific action after a product is inserted into WooCommerce database using the REST API endpoint POST /wp-json/wc/v3/products
I have searched online for a couple of hours and I found multiple solutions, but non of them worked in my case. Almost all of them work fine when you add a product from within the WordPress backend (the normal way via WP backend area–> Products–> Add new).
You can use one of the following hooks to trigger whatever you want after creating a product using the normal way:
add_action('added_product_meta', 'my_function', 10, 4 );
add_action('updated_product_meta', 'my_function', 10, 4 );
do_action('rest_insert_product', 'my_function', WP_Post $post, WP_REST_Request $request, bool $creating )
add_action('save_post_product', 'my_function', 10, 3);
add_action('save_post', 'my_function', 10, 3);
add_action('woocommerce_api_create_product', 'my_function', 10, 2 );
The hook that worked in my case was woocommerce_new_product
. Place the following code in your theme functions.php file.
add_action( 'woocommerce_new_product','send_email_after_a_product_is_created' , 10, 2);
function send_email_after_a_product_is_created( $product_id ) {
// Don't do anything when we are editing an existing product
if (wp_is_post_revision($product_id))
{
return;
}
if ( get_post_type($product_id ) == 'product' )
{
$product_title = get_the_title( $product_id );
$product_url = get_permalink( $product_id );
$subject = 'New product in your WooCommerce shop';
$message = "A new product has been added to your webshop with the following title :\n\n";
$message .= $product_title . ": " . $product_url;
// Send email
wp_mail( 'YOUR_EMAIL_ADDRESS@EXAMPLE.COM', $subject, $message );
}
}
The above example sends me an email every time a product is created in WooCommerce using the REST API. You can execute whatever code you want instead of sending the email. I have used the email as an example. In my case it wasn’t about sending the email, it was something different which is a bit complex!
The email I received after I did a POST request on /wp-json/wc/v3/products
!
Leave a Reply