Хотя WooCommerce не предоставляет API для изменения типа продукта, фактически WooCommerce действительно реализует эту функцию, поскольку необходимо поддерживать изменение типа продукта с помощью поля выбора «Тип продукта» на страницах администратора, таких как https :://aaa.bbb.ccc/wp-admin/post.php?post=12345&action=edit.Код для этого по сути следующий:
$classname = WC_Product_Factory::get_product_classname( $post_id, $product_type );
$product = new $classname( $post_id );
$product->save();
Обратите внимание, что здесь происходит преобразование типа продукта, поскольку тип продукта существующего продукта с id == $ post_id может отличаться от $ product_type.Очевидно, можно использовать конструктор продукта другого типа, чем тот, который использовался для первоначального конструирования продукта.Это кажется странным, но именно так поступает код WooCommerce при изменении типа продукта на странице администратора.
REST API осуществляет изменение типа продукта практически таким же образом.