使用woocommerce hook获取最近添加的产品

时间:2017-03-02 14:09:05

标签: php wordpress woocommerce product hook-woocommerce

我想在从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。

感谢。

1 个答案:

答案 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文件中,或者放在任何插件文件中。

一切都经过测试和运作。

参考:Class WC_Product methods