Прочитайте и обновите пользовательское поле в хуке woocommerce_product_on_backorder - PullRequest
1 голос
/ 07 апреля 2019

У меня есть настраиваемое поле в вариационных продуктах Woocommerce, и я пытаюсь обновить это поле везде, где есть задержка заказа. Это код

add_action( 'woocommerce_product_on_backorder', 'reduce_second_stock' );
function reduce_second_stock( $array ){
    $temp = get_post_meta($array['product']->ID, 'second_stock', true);
    update_post_meta( $array['product']->ID, 'second_stock', $temp - $array['quantity'] );
}

Настраиваемое поле называется second_stock, которое является просто числом. То, что я пытаюсь сделать, - это уменьшить это число на основе количества отстающих заказов этого заказа.

Однако, даже если регулярный запас товара обновляется, мое настраиваемое поле остается прежним.

1 Ответ

1 голос
/ 07 апреля 2019

С этим хуком , $array['product'] является объектом WC_Product, поэтому для получения идентификатора продукта необходимо использовать связанный метод get_id()… Поскольку WooCommerce 3 и CRUD Objects , вы можете напрямую использовать WC_Data методы get_meta(), update_meta_data() и save() для объекта WC_Product, например:

add_action( 'woocommerce_product_on_backorder', 'reduce_second_stock' );
function reduce_second_stock( $array ){
    if( $original_stock = $array['product']->get_meta('second_stock') ) {
        $array['product']->update_meta_data( 'second_stock', ( $original_stock - $array['quantity'] ) );
        $array['product']->save();
    }
}

Код входит в файл function.php вашего активногодетская тема (или активная тема).Это должно работать.

...