Я пытаюсь заменить значение поля 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 );
На скриншоте вы не работаете над вариантами продукта, поэтому ваш код не соответствует.
Для всех типов продуктов (кроме переменных продуктов и их разновидностей, вы будете использовать один из этих (где ты заменишь 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 (представлен в 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 вашей активной дочерней темы (или активной темы). Это должно работать.
Других решений пока нет …