Добавить измерение продукта, пока они пусты - Добавить / изменить продукт - Woocommerce - PullRequest
0 голосов
/ 12 июня 2018

Стоимость доставки рассчитывается с использованием веса и габаритов товара на моем сайте Woocommerce.Тем не менее, моя система инвентаризации использует вес товара только для тарифов на доставку.Из-за этого новые продукты, синхронизированные из системы инвентаризации с веб-сайтом, обычно не имеют размеров.

После нескольких тестов я обнаружил, что добавление длины, ширины и высоты в 0,001 года к товарам на сайтегенерирует самые точные тарифы на доставку.

Мне нужно написать функцию, которая устанавливает размеры товара на .001, если они пустые на момент создания.

Вот что я пытался:

function add_default_dimension_if_empty( $meta_id, $post_id, $meta_key, $meta_value ) {
    if ( $meta_key == '_edit_lock' ) {
        if ( get_post_type( $post_id ) == 'product' ) {
            //get product
            $product = wc_get_product( $post_id );
            $newDim = .001;
            if($product->has_dimensions()){
                if(empty( $product->get_length() )){
                    update_post_meta($post_id, '_length', $newDim);
                }
                if(empty( $product->get_width() )){
                    update_post_meta($post_id, '_width', $newDim);
                }
                if(empty( $product->get_height() )){
                    update_post_meta($post_id, '_height', $newDim);
                }
            }
        }
    }
}
add_action( 'added_post_meta', 'add_default_dimension_if_empty', 10, 4 );
add_action( 'updated_post_meta', 'add_default_dimension_if_empty', 10, 4 );

Я использовал структуру из этой статьи , но, похоже, она не работает.Есть мысли?

1 Ответ

0 голосов
/ 13 июня 2018

Ваш код в порядке, просто нужно изменить одно условие, которое проверяет, существует или нет измерение.Замените if($product->has_dimensions()) строку следующей

    $dimensions = $product->get_dimensions();
    if(! empty( $dimensions ))

Это будет работать для вас.

...