вариации в WooCommerce

5 июн. 2012 г., 10:29:51
Просмотры: 16.5K
Голосов: 1

Я использую плагин WooCommerce для интернет-магазина. Проблема в том, что он позволяет максимум 50 вариаций для товара, но моему клиенту нужно около 350 вариаций с атрибутами размер, цвет и т.д. Есть ли способ изменить код или другие решения?

Спасибо,

Фрэнк

0
Все ответы на вопрос 4
0

Просто для ясности, в WooCommerce нет ограничения в 50 вариаций для одного товара - это большое заблуждение.

Вы определенно можете иметь гораздо больше вариаций. Я сам делал это много раз и никогда не испытывал проблем. Для общего понимания вариаций посмотрите документацию WooCommerce: Вариации товаров.

Что касается ограничения, оно относится к возможности автоматического связывания вариаций: Связывание возможных вариаций. Там говорится:

Вместо добавления каждой вариации по одной, вы можете нажать кнопку 'связать все вариации'. Это создаст новую вариацию для каждой возможной комбинации атрибутов вариаций (максимум 50 за один раз).

Важная часть - »максимум 50 за один раз« - это означает, что вам нужно запускать процесс несколько раз, если ваш выбор атрибутов приводит к большему количеству возможных вариаций. Ограничение существует »для предотвращения проблем с памятью« - дополнительно смотрите ответ @brasofilo.

Дополнительная информация: ответ @brasofilo относится к довольно старой версии, имейте это в виду; ответ @shamim539 относится к более новой версии 2.x, но может быть улучшен.
Приведенный им пример кода находится внутри условия, которое проверяет, была ли определена переменная - посмотрите:

if ( ! defined( 'WC_MAX_LINKED_VARIATIONS' ) ) {
    define( 'WC_MAX_LINKED_VARIATIONS', 49 );
}

Поэтому нет необходимости вносить изменения в файл woocommerce-ajax.php, это все равно будет перезаписано при обновлении плагина. Просто определите переменную в вашем functions.php:

    define( 'WC_MAX_LINKED_VARIATIONS', 249 );

Но: Если вы собираетесь увеличить лимит, убедитесь, что ваш сервер может справиться с увеличенным лимитом.

Если у вас возникают проблемы с сохранением большого объема данных - как предложил @user1418998 - это также документировано: Проблемы с сохранением большого объема данных (вариации, тарифы и т.д.).

11 сент. 2013 г. 18:43:34
2

Из форумов WooCommerce:

На данный момент у нас есть ограничение в 50 связанных вариаций для одного товара (чтобы избежать проблем с памятью). Все, что превышает это количество, считается очень сложным и требует индивидуальной доработки. Управлять одним товаром с более чем 3000 вариаций непросто в любой eCommerce-платформе.

Тем не менее, похоже, вам придется модифицировать код плагина или создать хук (не уверен, как именно, но плагин поддерживает это для данной функции), чтобы изменить поведение функции woocommerce_link_all_variations.

Макс. 100 — это оригинальный комментарий в файле.

/*
 * Файл: /plugins/woocommerce/woocommerce-ajax.php
 * Строка: 487
 * WooCommerce: v1.5.6
 */
// Макс. 100
if ($added>49) break;
5 июн. 2012 г. 19:16:10
Комментарии

Спасибо, Brasofilo... но мне интересно, как парню из этого поста удалось получить такое огромное количество вариаций??

http://wordpress.stackexchange.com/questions/53750/woocommerce-too-many-variations

Frank Frank
6 июн. 2012 г. 18:32:35

Ну, попробуйте поставить 350 там, где я указал... Но было бы лучше, если бы вы протестировали это на копии сайта, если ваш уже работает.

brasofilo brasofilo
6 июн. 2012 г. 21:23:47
1

Исходя из моего опыта, проблема может быть скрыта в файле php.ini! Найдите параметр max_input_vars, раскомментируйте его и увеличьте значение до 2000 или больше, в зависимости от ваших потребностей. В моем случае без этого изменения я мог ввести максимум 40 вариаций, при большем количестве происходило смешение заказов, изображения и цены не сохранялись. У меня был такой огромный объем входных переменных из-за работы плагина Woocommerce WPML вместе с другими плагинами, такими как Ether Content Builder.

15 июл. 2013 г. 11:55:44
Комментарии

это max_input_vars, а не max_var_inputs

Milo Milo
11 сент. 2013 г. 18:49:01
0

В следующем расположении:

plugins/woocommerce/woocommerce-ajax.php

Найдите PHP файл: woocommerce-ajax.php.

На строке номер 603 выполните:

define( 'WC_MAX_LINKED_VARIATIONS', 149 );

* Установите ваше максимальное значение, я установил 149

11 сент. 2013 г. 12:24:27