我想在从Woocommerce管理员添加产品后发送API请求。实际上我想要的是当用户将新产品(A课程)添加到他的商店时,API请求将创建一个与LMS中的产品同名的课程。
我已成功挂钩产品创建活动,但不知道如何获取我在woocommerce中创建或添加的产品数据。
这是我的代码:
add_action('transition_post_status', 'product_add', 10, 3);
function product_add($new_status, $old_status, $post) {
if(
$old_status != 'publish'
&& $new_status == 'publish'
&& !empty($post->ID)
&& in_array( $post->post_type,
array( 'product')
)
) {
//here I want to get the data of product that is added
}
}
这段代码工作正常,当我添加一个产品并在这个函数内回显一些东西时它运行正常。
只想获取产品的名称和ID。
感谢。
答案 0 :(得分:1)
此时,您可以非常轻松地获取已发布产品的相关数据,甚至可以获取产品ID和产品名称。您将在下面找到从产品中获取任何相关数据的大部分可能性:
add_action('transition_post_status', 'action_product_add', 10, 3);
function action_product_add( $new_status, $old_status, $post ){
if( 'publish' != $old_status && 'publish' != $new_status
&& !empty($post->ID) && in_array( $post->post_type, array('product') ) ){
// You can access to the post meta data directly
$sku = get_post_meta( $post->ID, '_sku', true);
// Or Get an instance of the product object (see below)
$product = wc_get_product($post->ID);
// Then you can use all WC_Product class and sub classes methods
$price = $product->get_price(); // Get the product price
// 1°) Get the product ID (You have it already)
$product_id = $post->ID;
// Or (compatibility with WC +3)
$product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;
// 2°) To get the name (the title)
$name = $post->post_title;
// Or
$name = $product->get_title( );
}
}
代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。
一切都经过测试和运作。