Ускорение создания массовых переменных Woocommerce - PullRequest
0 голосов
/ 15 января 2019

Я создаю переменные продукты. Например, у меня 9 цветов, 9 размеров. Что составляет 9 × 9 = 81 общее количество вариаций для 1 продукта.

Вариант Foreach, ниже приведена функция, которая запускается.

function create_product_variation( $product_id, $variation_data, $productColorsAndIDs ){
    // Get the Variable product object (parent)
    $product = wc_get_product($product_id);
    $variation_post = array(
        'post_title'  => $product->get_title(),
        'post_name'   => 'product-'.$product_id.'-variation',
        'post_status' => 'publish',
        'post_parent' => $product_id,
        'post_type'   => 'product_variation',
        'guid'        => $product->get_permalink()
    );

    // Creating the product variation
    $variation_id = wp_insert_post( $variation_post );

    // Get an instance of the WC_Product_Variation object
    $variation = new WC_Product_Variation( $variation_id );

    // Iterating through the variations attributes
    foreach ($variation_data['attributes'] as $attribute => $term_name )
    {
        //Only have 2 attributes, size and color.
        $taxonomy = 'pa_'.$attribute;
        update_post_meta( $variation_id, 'attribute_'.$taxonomy, $term_name );
    }

    // Prices
    $variation->set_price( $variation_data['regular_price'] );
    $variation->set_regular_price( $variation_data['regular_price'] );
    $variation->set_image_id($variation_data['variation_thumbnail_id']);

    $variation->save(); // Save the data
}

Перед запуском вышеуказанного кода я инкапсулирую цикл следующим образом:

wp_defer_term_counting( false);     //Speeding Up Bulk Update Tricks
wp_defer_comment_counting( false );  //Speeding Up Bulk Update Tricks

//Here comes the loop, which calls the above function create_product_variation().

wp_defer_term_counting( true );     
wp_defer_comment_counting( true ); 

Процесс создания медленный, даже если я на быстром хостинге (план хостинга SiteGround GoGeek.) Выше кода создает 1 продукт за 1-2 минуты, что довольно медленно, и в большинстве случаев я получаю ошибки шлюза 504, пока запустить его.

Что мне здесь не хватает? Как я могу оптимизировать его, чтобы он работал быстрее?

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