product_presave
Срабатывает перед сохранением товара: при редактировании товара вручную или при импорте.
Доступно начиная с версии 7.3.0.
Shop-Script
Входящие параметры (передаются по ссылке)
$params['data'] array Свойства товара перед сохранением в виде массива со следующими ключами:
$params['data']['id'] int ID товара.
$params['data']['name'] string Наименование.
$params['data']['summary'] string Краткое описание.
$params['data']['meta_title'] string Значение элемента TITLE страницы товара.
$params['data']['meta_keywords'] string Значение метатега keywords.
$params['data']['meta_description'] string Значение метатега description.
$params['data']['description'] string Полное описание.
$params['data']['contact_id'] int ID контакта пользователя, добавившего товар.
$params['data']['create_datetime'] datetime Дата и время создания товара.
$params['data']['edit_datetime'] datetime Дата и время последнего обновления товара.
$params['data']['status'] int Обозначение статуса товара: -1 (снят с публикации), 0 (скрыт), 1 (опубликован).
$params['data']['type_id'] int ID типа товара.
$params['data']['image_id'] int ID основного изображения.
$params['data']['video_url'] string Ссылка на видеоролик.
$params['data']['sku_id'] int ID основной модификации.
$params['data']['url'] int Редактируемая часть URL страницы товара на витрине.
$params['data']['rating'] float Рейтинг товара по результатам его оценки покупателями.
$params['data']['price'] float Цена.
$params['data']['compare_price'] float Зачёркнутая цена.
$params['data']['currency'] string Обозначение валюты товара в формате ISO 4217.
$params['data']['min_price'] float Минимальная цена модификации.
$params['data']['max_price'] float Максимальная цена модификации.
$params['data']['tax_id'] int ID выбранного налогового правила или 0, если правило не выбрано.
$params['data']['count'] float|null Общее количество на складе всех модификаций. Значение
$params['data']['count_denominator'] int Доступная точность указания складских остатков товара. Возможные значения: 1 (целые штуки), 10 (точность до десятых), 100 (точность до сотых), 1000 (точность до тысячных).
$params['data']['order_multiplicity_factor'] float Шаг (кратность) добавления в корзину.
$params['data']['stock_unit_id'] int ID выбранной складской единицы измерения количества.
$params['data']['base_unit_id'] int ID выбранной базовой единицы измерения количества.
$params['data']['stock_base_ratio'] float Соотношение между складской и базовой единицами измерения количества.
$params['data']['order_count_min'] float Минимальное количество товара в заказе.
$params['data']['order_count_step'] float Значение изменения количества кнопками «+/-».
$params['data']['cross_selling'] int Режим отображения сопутствующих товаров: 0 (выключено), 1 (включено показывать в соответствии с настройками типа товаров), 2 (включено показывать выбранные вручную рекомендуемые товары).
$params['data']['upselling'] int Режим отображения схожих и альтернативных товаров: 0 (выключено), 1 (включено показывать в соответствии с настройками типа товаров), 2 (включено показывать выбранные вручную рекомендуемые товары).
$params['data']['rating_count'] int Количество отзывов о товаре.
$params['data']['total_sales'] float Общая сумма продаж товара, выраженная в основной валюте магазина,.
$params['data']['category_id'] int ID основной категории.
$params['data']['badge'] string Обозначение одной из стандартных наклеек либо HTML собственной наклейки для изображений.
$params['data']['sku_type'] int Тип выбора модификаций товара на витрине: 0 (по наименованиям артикулов), 1 (по значениям характеристик).
$params['data']['sku_count'] int Количество модификаций.
$params['data']['params'] array Список дополнительных параметров в формате «ключ-значение».
$params['data']['type'] array Свойства типа товара в виде массива со следующими ключами:
$params['data']['type']['id'] int ID типа.
$params['data']['type']['name'] string Название типа.
$params['data']['type']['cross_selling'] string|null Режим выбора сопутствующих товаров для этого типа: 'alsobought' (автоматически, на основании того, что заказывали другие покупатели), 'category/[category_id]' (случайный выбор из категории с указанным category_id), пустое значение (отключено).
$params['data']['type']['upselling'] bool Доступность отображения схожих и альтернативных товаров: 0 (выключено), 1 (включено).
$params['data']['type']['count'] int Количество товаров данного типа.
$params['data']['type']['stock_unit_fixed'] int Возможность изменения складской единицы измерения количества (0 — может быть изменено в свойствах товаров, 1 — не может быть изменено в свойствах товаров, 2 — выключено).
$params['data']['type']['stock_unit_id'] int ID складской единицы измерения количества.
$params['data']['type']['base_unit_fixed'] int Возможность изменения базовой единицы измерения количества (0 — может быть изменено в свойствах товаров, 1 — не может быть изменено в свойствах товаров, 2 — выключено).
$params['data']['type']['base_unit_id'] int ID базовой единицы измерения количества.
$params['data']['type']['stock_base_ratio_fixed'] int Возможность изменения соотношения между складской и базовой единицами (0 — может быть изменено в свойствах товаров, 1 — не может быть изменено в свойствах товаров, 2 — выключено).
$params['data']['type']['stock_base_ratio'] float Соотношение между складской и базовой единицами (сколько базовых единиц в одной складской).
$params['data']['type']['count_denominator_fixed'] int Возможность изменения доступной точности указания складских остатков товара (0 — может быть изменено в свойствах товаров, 1 — не может быть изменено в свойствах товаров, 2 — выключено).
$params['data']['type']['count_denominator'] int Доступная точность указания складских остатков товара. Возможные значения: 1 (целые штуки), 10 (точность до десятых), 100 (точность до сотых), 1000 (точность до тысячных).
$params['data']['type']['order_multiplicity_factor_fixed'] int Возможность изменения шага (кратности) изменения количества товаров в корзине (0 — может быть изменено в свойствах товаров, 1 — не может быть изменено в свойствах товаров, 2 — выключено).
$params['data']['type']['order_multiplicity_factor'] float Шаг (кратность) изменения количества товаров в корзине.
$params['data']['type']['order_count_min_fixed'] int Возможность изменения минимального количества товаров для заказа (0 — может быть изменено в свойствах товаров, 1 — не может быть изменено в свойствах товаров, 2 — выключено).
$params['data']['type']['order_count_min'] float Минимальное количество товаров для заказа.
$params['data']['type']['order_count_step_fixed'] int Возможность изменения количества товаров в корзине кнопками «+/-» (0 — может быть изменено в свойствах товаров, 1 — не может быть изменено в свойствах товаров, 2 — выключено).
$params['data']['type']['order_count_step'] float Значение изменения количества товаров в корзине кнопками «+/-».
$params['data']['categories'] array Список ID категорий товара.
$params['data']['sets'] array Список ID списков товара.
$params['data']['tags'] string Теги товара, перечисленные через запятую.
$params['data']['skus'] array Массив информации о модификациях товара. Подмассив каждой модификации содержит значения со следующими ключами:
$params['data']['skus'][]['sku'] int Код артикула.
$params['data']['skus'][]['name'] string Наименование артикула.
$params['data']['skus'][]['image_id'] int ID изображения, выбранного в свойствах модификации.
$params['data']['skus'][]['price'] float Цена.
$params['data']['skus'][]['purchase_price'] float Закупочная цена.
$params['data']['skus'][]['compare_price'] float Зачёркнутая цена.
$params['data']['skus'][]['available'] int Флаг (0 или 1), означающий доступность модификации для заказа.
$params['data']['skus'][]['stock_base_ratio'] float Соотношение между складской и базовой единицами измерения количества.
$params['data']['skus'][]['order_count_min'] float Минимальное количество модификации в заказе.
$params['data']['skus'][]['order_count_step'] float Значение изменения количества кнопками «+/-».
$params['data']['skus'][]['status'] int Видимость модификации на витрине.
$params['data']['skus'][]['stock'] array Массив с информацией об остатках на отдельных складах. Ключи массива — ID складов. Строковые ключи, начинающиеся с буквы 'v' — обозначения виртуальных складов.
$params['data']['skus'][]['stock'][stock_id] float|null Количество модификации на складе.
$params['new_data'] array Массив данных, которые нужно сохранить.
$params['instance'] object Экземпляр класса
$params['data']['id'] int ID товара.
$params['data']['name'] string Наименование.
$params['data']['summary'] string Краткое описание.
$params['data']['meta_title'] string Значение элемента TITLE страницы товара.
$params['data']['meta_keywords'] string Значение метатега keywords.
$params['data']['meta_description'] string Значение метатега description.
$params['data']['description'] string Полное описание.
$params['data']['contact_id'] int ID контакта пользователя, добавившего товар.
$params['data']['create_datetime'] datetime Дата и время создания товара.
$params['data']['edit_datetime'] datetime Дата и время последнего обновления товара.
$params['data']['status'] int Обозначение статуса товара: -1 (снят с публикации), 0 (скрыт), 1 (опубликован).
$params['data']['type_id'] int ID типа товара.
$params['data']['image_id'] int ID основного изображения.
$params['data']['video_url'] string Ссылка на видеоролик.
$params['data']['sku_id'] int ID основной модификации.
$params['data']['url'] int Редактируемая часть URL страницы товара на витрине.
$params['data']['rating'] float Рейтинг товара по результатам его оценки покупателями.
$params['data']['price'] float Цена.
$params['data']['compare_price'] float Зачёркнутая цена.
$params['data']['currency'] string Обозначение валюты товара в формате ISO 4217.
$params['data']['min_price'] float Минимальная цена модификации.
$params['data']['max_price'] float Максимальная цена модификации.
$params['data']['tax_id'] int ID выбранного налогового правила или 0, если правило не выбрано.
$params['data']['count'] float|null Общее количество на складе всех модификаций. Значение
null означает, что для некоторых модификаций товара указано бесконечное количество на складе.$params['data']['count_denominator'] int Доступная точность указания складских остатков товара. Возможные значения: 1 (целые штуки), 10 (точность до десятых), 100 (точность до сотых), 1000 (точность до тысячных).
$params['data']['order_multiplicity_factor'] float Шаг (кратность) добавления в корзину.
$params['data']['stock_unit_id'] int ID выбранной складской единицы измерения количества.
$params['data']['base_unit_id'] int ID выбранной базовой единицы измерения количества.
$params['data']['stock_base_ratio'] float Соотношение между складской и базовой единицами измерения количества.
$params['data']['order_count_min'] float Минимальное количество товара в заказе.
$params['data']['order_count_step'] float Значение изменения количества кнопками «+/-».
$params['data']['cross_selling'] int Режим отображения сопутствующих товаров: 0 (выключено), 1 (включено показывать в соответствии с настройками типа товаров), 2 (включено показывать выбранные вручную рекомендуемые товары).
$params['data']['upselling'] int Режим отображения схожих и альтернативных товаров: 0 (выключено), 1 (включено показывать в соответствии с настройками типа товаров), 2 (включено показывать выбранные вручную рекомендуемые товары).
$params['data']['rating_count'] int Количество отзывов о товаре.
$params['data']['total_sales'] float Общая сумма продаж товара, выраженная в основной валюте магазина,.
$params['data']['category_id'] int ID основной категории.
$params['data']['badge'] string Обозначение одной из стандартных наклеек либо HTML собственной наклейки для изображений.
$params['data']['sku_type'] int Тип выбора модификаций товара на витрине: 0 (по наименованиям артикулов), 1 (по значениям характеристик).
$params['data']['sku_count'] int Количество модификаций.
$params['data']['params'] array Список дополнительных параметров в формате «ключ-значение».
$params['data']['type'] array Свойства типа товара в виде массива со следующими ключами:
$params['data']['type']['id'] int ID типа.
$params['data']['type']['name'] string Название типа.
$params['data']['type']['cross_selling'] string|null Режим выбора сопутствующих товаров для этого типа: 'alsobought' (автоматически, на основании того, что заказывали другие покупатели), 'category/[category_id]' (случайный выбор из категории с указанным category_id), пустое значение (отключено).
$params['data']['type']['upselling'] bool Доступность отображения схожих и альтернативных товаров: 0 (выключено), 1 (включено).
$params['data']['type']['count'] int Количество товаров данного типа.
$params['data']['type']['stock_unit_fixed'] int Возможность изменения складской единицы измерения количества (0 — может быть изменено в свойствах товаров, 1 — не может быть изменено в свойствах товаров, 2 — выключено).
$params['data']['type']['stock_unit_id'] int ID складской единицы измерения количества.
$params['data']['type']['base_unit_fixed'] int Возможность изменения базовой единицы измерения количества (0 — может быть изменено в свойствах товаров, 1 — не может быть изменено в свойствах товаров, 2 — выключено).
$params['data']['type']['base_unit_id'] int ID базовой единицы измерения количества.
$params['data']['type']['stock_base_ratio_fixed'] int Возможность изменения соотношения между складской и базовой единицами (0 — может быть изменено в свойствах товаров, 1 — не может быть изменено в свойствах товаров, 2 — выключено).
$params['data']['type']['stock_base_ratio'] float Соотношение между складской и базовой единицами (сколько базовых единиц в одной складской).
$params['data']['type']['count_denominator_fixed'] int Возможность изменения доступной точности указания складских остатков товара (0 — может быть изменено в свойствах товаров, 1 — не может быть изменено в свойствах товаров, 2 — выключено).
$params['data']['type']['count_denominator'] int Доступная точность указания складских остатков товара. Возможные значения: 1 (целые штуки), 10 (точность до десятых), 100 (точность до сотых), 1000 (точность до тысячных).
$params['data']['type']['order_multiplicity_factor_fixed'] int Возможность изменения шага (кратности) изменения количества товаров в корзине (0 — может быть изменено в свойствах товаров, 1 — не может быть изменено в свойствах товаров, 2 — выключено).
$params['data']['type']['order_multiplicity_factor'] float Шаг (кратность) изменения количества товаров в корзине.
$params['data']['type']['order_count_min_fixed'] int Возможность изменения минимального количества товаров для заказа (0 — может быть изменено в свойствах товаров, 1 — не может быть изменено в свойствах товаров, 2 — выключено).
$params['data']['type']['order_count_min'] float Минимальное количество товаров для заказа.
$params['data']['type']['order_count_step_fixed'] int Возможность изменения количества товаров в корзине кнопками «+/-» (0 — может быть изменено в свойствах товаров, 1 — не может быть изменено в свойствах товаров, 2 — выключено).
$params['data']['type']['order_count_step'] float Значение изменения количества товаров в корзине кнопками «+/-».
$params['data']['categories'] array Список ID категорий товара.
$params['data']['sets'] array Список ID списков товара.
$params['data']['tags'] string Теги товара, перечисленные через запятую.
$params['data']['skus'] array Массив информации о модификациях товара. Подмассив каждой модификации содержит значения со следующими ключами:
$params['data']['skus'][]['sku'] int Код артикула.
$params['data']['skus'][]['name'] string Наименование артикула.
$params['data']['skus'][]['image_id'] int ID изображения, выбранного в свойствах модификации.
$params['data']['skus'][]['price'] float Цена.
$params['data']['skus'][]['purchase_price'] float Закупочная цена.
$params['data']['skus'][]['compare_price'] float Зачёркнутая цена.
$params['data']['skus'][]['available'] int Флаг (0 или 1), означающий доступность модификации для заказа.
$params['data']['skus'][]['stock_base_ratio'] float Соотношение между складской и базовой единицами измерения количества.
$params['data']['skus'][]['order_count_min'] float Минимальное количество модификации в заказе.
$params['data']['skus'][]['order_count_step'] float Значение изменения количества кнопками «+/-».
$params['data']['skus'][]['status'] int Видимость модификации на витрине.
$params['data']['skus'][]['stock'] array Массив с информацией об остатках на отдельных складах. Ключи массива — ID складов. Строковые ключи, начинающиеся с буквы 'v' — обозначения виртуальных складов.
$params['data']['skus'][]['stock'][stock_id] float|null Количество модификации на складе.
$params['new_data'] array Массив данных, которые нужно сохранить.
$params['instance'] object Экземпляр класса
shopProduct, соответствующий сохраняемому товару.
… код плагина …
Результат работы плагина
$return['result']
Флаг, который нужно вернуть, чтобы сигнализировать об ошибке. В противном случае обработчик хука не должен возвращать значение.
$return['error']
Сообщение об ошибке.
Shop-Script
Пример кода плагина
PHP
public function productPresave($params)
{
if (!empty($params['new_data']['description']) && strpos($params['new_data']['description'], '#') !== false) {
return [
'result' => false,
'error' => _wp('# character is not allowed in product descriptions.'),
];
}
}









