用Woocommerce中的ACF字段值替换产品重量

时间:2018-12-11 09:47:35

标签: php wordpress woocommerce attributes advanced-custom-fields

我试图用WordPress仪表板中的ACF字段值替换woocommerce中的Weight字段值。

我不确定是否需要使用此功能来替换此字段

// define the woocommerce_save_product_variation callback 
function action_woocommerce_save_product_variation( $variation_id, $i ) { 
// make action magic happen here... 
}; 

// add the action 
add_action( 'woocommerce_save_product_variation', 'action_woocommerce_save_product_variation', 10, 2 ); 

enter image description here

1 个答案:

答案 0 :(得分:0)

在屏幕截图中,您没有使用产品变体,因此代码不适用。

对于所有产品类型(可变产品及其变体除外,您将使用其中的一种(其中将ACF custom_weight函数中的get_field()替换为正确的子段)

add_action( 'woocommerce_process_product_meta', 'update_product_weight_from_acf', 100, 1 );
function update_product_weight_from_acf( $product_id ) {
    if( $weight_acf = get_field( 'custom_weight', $product_id ) )
        update_post_meta( $product_id, '_weight', $weight_acf );
}

或使用WC_Products setter方法(Woocommerce 3引入):

add_action( 'woocommerce_admin_process_product_object', 'update_product_weight_from_acf', 10, 1 );
function update_product_weight_from_acf( $product ) { 
    if( $weight_acf = get_field( 'custom_weight', $product->get_id() ) )
        $product->set_weight( $weight_acf );
}

代码进入您的活动子主题(或活动主题)的function.php文件中。应该可以。