Замените вес продукта на значение поля ACF в Woocommerce - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь заменить значение поля Weight в woocommerce значением поля ACF в WordPress Dashboard.

Я не уверен Если мне нужно использовать эту функцию, чтобы заменить это поле

// 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 голосов
/ 11 декабря 2018

На скриншоте вы не работаете с вариантами продуктов, поэтому ваш код не соответствует.

Для всех типов продуктов (кроме переменных продуктов и их вариантов, вы будете использовать один из этих (где вы замените custom_weight в функции ACF 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 (представлен в 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 вашей активной дочерней темы (или активной темы). Он должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...