Как добавить пользовательскую функцию для добавления / обновления продукта?

Конечной целью здесь является плагин, так что когда элемент добавляется или обновляется в WooCommerce, я вызываю пользовательскую функцию для извлечения дополнительных данных из API. Например, если бы я хотел добавить ISBN 1119327776, я бы создал новый продукт с этим SKU, а затем, когда я нажму публикацию, я бы назвал API рекламы продукта Amazon, чтобы собирать и вставлять заголовок, описание, размеры и т. Д. Проблема заключается в том, Я зацикливаюсь на том, где и как на самом деле добавить действие. Я пытался:

//test wp_update_post add_action hook function update_test() { echo "this was a success!"; } add_action( "wp_update_post", "update_test" ); //test save_post add_action hook function update_test() { echo "this was a success!"; } add_action( "save_post", "update_test" ); //test save_post_product add_action hook function update_test() { echo "this was a success!"; } add_action( "save_post_product", "update_test" ); 

Я пробовал это как в файлах функций темы, так и в качестве настраиваемого плагина, но без успеха. Однако использование wp_update_post создало выход, когда я нажал «Добавить продукт», а не когда я нажимаю «Опубликовать» на этом новом продукте.

Обновление: следующий код действительно перезагружает заголовок, однако перед этим он отключается. Как будто он пытается зациклять все продукты и обновлять заголовки.

 add_action( "save_post_product", "make_api_call" ); function make_api_call( $post_id ) { $datas["ID"] = $post_id; $datas["post_title"] = "this title was reset"; wp_update_post( $datas ); } 

Solutions Collecting From Web of "Как добавить пользовательскую функцию для добавления / обновления продукта?"

Этот код действительно работает. В вопросе я создал редактирование, в котором говорилось об этом. Это было связано с созданным бесконечным циклом. Следующий код исправляет эту проблему.

 function make_api_call( $post_id ) { //unhook to avoid infinite loop remove_action( "save_post_product", "make_api_call" ); //make API call and pass data into update array $update["ID"] = $post_id; $update["post_title"] = "this title was reset"; //update the post wp_update_post( $update ); //re-hook the disabled function add_action( "save_post_product", "make_api_call" ); } add_action( "save_post_product", "make_api_call" );