Добавление вариантов в WooCommerce из API, но он добавляет дубликаты вариантов - PullRequest
0 голосов
/ 02 ноября 2019

В выделенной области я проверяю, доступен родитель или нет (если идентификатор родителя доступен, то у продуктов будут варианты), а затем я также проверяю, доступен ли идентификатор варианта в списке ранее добавленного нами варианта. идентификаторы (если он недоступен, то следует добавить варианты продуктов), но он по-прежнему добавляет дубликаты вариантов для некоторых продуктов, а не для всех

Для проверки вариантов в API Я использую этот код

$childinfo = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}postmeta WHERE meta_key = 'lmup_childs' ORDER by meta_id limit 30");

        if(is_array($childinfo))
        foreach($childinfo as $info)
        {
            $token     = ApiHandler::getToken();
            $parent_id = $info->post_id;
            $childs    = unserialize($info->meta_value);
            $attrs     = [];
            $data      = [];

            foreach($childs as $id){
                // get product info from API
                $result = self::getProduct($id, $token);
                if(!property_exists($result, 'error')){
                    $attr       = $result->parent_option_value;
                    $attrEng    = $result->translated_parent_option_value;
                    $attrs[]    = !empty($attrEng)? $attrEng :$attr;
                    $data[$id]  = $result;
                }
            }

            self::addAttributes($parent_id, $attrs);
            $ids = [];
            foreach($data as $id => $single){
                $ids[$id] = self::addVariantion($parent_id, $single);
            }

            delete_post_meta($parent_id, 'lmup_childs');
        }   

Для добавления вариантов я использую этот код

function addVariantion( $product_id, $data )
    {
        try {
            $option = $data->translated_parent_option_value;
            $option = !empty($option) ? $option : $data->parent_option_value;
            $option = wc_sanitize_taxonomy_name( stripslashes( $option ));

            $variation = new WC_Product_Variation();
            //$variation->set_sku( $data->sku );
            $variation->set_parent_id($product_id);
            $variation->set_attributes(["pa_options" => $option]);
            $variation->set_manage_stock( true );
            $variation->set_status("publish");
            $variation->set_weight( $data->weight ); //Set the product's weight.
            $variation->set_length( $data->box_length ); //Set the product length.
            $variation->set_width( $data->box_width ); //Set the product width.
            $variation->set_height( $data->box_height ); //Set the product height.

            $variation_id = $variation->save();
            update_post_meta($variation_id, 'ch_api_id', $data->id );

            return $variation_id;
        } catch(Exception $e) {
            return $e->getMessage();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...