WooCommerce-Global$PRODUCT返回值为空

时间:2018-11-26 作者:Rashmi Ghatole

我的代码是:

function sync_on_product_save($new_status, $old_status, $post) {
     global $post;
     global $product;

 if( 
        $old_status != \'publish\' 
        && $new_status == \'publish\' 
        && !empty($post->ID) 
        && in_array( $post->post_type, 
            array( \'product\') 
            )
        ) {         

        print_R($product);
}
}

add_action(\'transition_post_status\', \'sync_on_product_save\', 10, 3);
我想将产品价格、sku、描述和名称传递给第三方API。

请帮帮我。

1 个回复
最合适的回答,由SO网友:butlerblog 整理而成

问题是$product 对象不存在于您尝试访问它的位置(当您在编辑器中点击“发布”时)。

正如Jacob Peattie在评论中提到的,您可能会从$post 对象但是,你可以得到$product 对象的$post->ID 然后使用对象中可用的“get\\uu0”方法获取所需的值。

以下是您修改后的代码,用于通过$product:

function sync_on_product_save( $new_status, $old_status, $post ) {

    if ( 
        $old_status != \'publish\' 
        && $new_status == \'publish\' 
        && ! empty( $post->ID ) 
        && in_array( $post->post_type, array( \'product\' ) )
    ) {         

        // Get the product object for this ID:
        $product = wc_get_product( $post->ID );

        // Use "get_" methods for values:
        $product_sku   = $product->get_sku();
        $product_name  = $product->get_name();
        $product_price = $product->get_price();
        $product_desc  = $product->get_description();

        // Do what you need for 3rd party here...
    }
}

add_action( \'transition_post_status\', \'sync_on_product_save\', 10, 3 );

结束

相关推荐