backend_settings_stocks
Срабатывает в разделе «Настройки → Склады». Позволяет добавлять собственные условия настройки правил списания товаров со складов.
Доступно начиная с версии 7.0.1.
Shop-Script
Входящие параметры (передаются по ссылке)
$params['stocks'] array Список складов. Каждый элемент списка — массив со следующими ключами:
$params['stocks'][stock_id]['id'] int ID склада.
$params['stocks'][stock_id]['name'] string Название склада.
$params['stocks'][stock_id]['public'] bool Признак видимости на витрине.
$params['stocks'][stock_id]['sort'] int Значение сортировки.
$params['stocks'][stock_id]['low_count'] int Максимальное количество товара, считающееся низким.
$params['stocks'][stock_id]['critical_count'] int Максимальное количество товара, считающееся критически низким.
$params['rules'] array Список правил списания товаров. Каждый элемент списка — массив со следующими ключами:
$params['rules'][rule_id]['id'] int ID правила.
$params['rules'][rule_id]['stock_id'] int ID склада для списания остатков.
$params['rules'][rule_id]['virtualstock_id'] int ID виртуального склада для списания остатков.
$params['rules'][rule_id]['rule_type'] string Тип правила: 'by_region' (по адресу доставки), 'by_region' (по способу доставки).
$params['rules'][rule_id]['rule_data'] string Значение правила: обозначение региона доставки (для типа правила 'by_region') или ID способа доставки (для типа правила 'by_shipping').
$params['rules'][rule_id]['sort'] int Значение сортировки.
$params['stocks'][stock_id]['id'] int ID склада.
$params['stocks'][stock_id]['name'] string Название склада.
$params['stocks'][stock_id]['public'] bool Признак видимости на витрине.
$params['stocks'][stock_id]['sort'] int Значение сортировки.
$params['stocks'][stock_id]['low_count'] int Максимальное количество товара, считающееся низким.
$params['stocks'][stock_id]['critical_count'] int Максимальное количество товара, считающееся критически низким.
$params['rules'] array Список правил списания товаров. Каждый элемент списка — массив со следующими ключами:
$params['rules'][rule_id]['id'] int ID правила.
$params['rules'][rule_id]['stock_id'] int ID склада для списания остатков.
$params['rules'][rule_id]['virtualstock_id'] int ID виртуального склада для списания остатков.
$params['rules'][rule_id]['rule_type'] string Тип правила: 'by_region' (по адресу доставки), 'by_region' (по способу доставки).
$params['rules'][rule_id]['rule_data'] string Значение правила: обозначение региона доставки (для типа правила 'by_region') или ID способа доставки (для типа правила 'by_shipping').
$params['rules'][rule_id]['sort'] int Значение сортировки.
… код плагина …
Результат работы плагина
$return['custom_html']
Необязательный HTML-элемент
<script> с дополнительным JavaScript-кодом.$return['id']
ID плагина.
$return['name']
Локализованное название типа правила.
$return['init_html']
HTML-элемент
<script> с JavaScript-кодом для добавления в форму и управления новыми элементами настройки правил.Shop-Script
Пример кода плагина
PHP
/**
* As an example, let us define limits for quantities of ordered items
* each automatically selecting one of available stocks
*/
public function backendSettingsStocks($params)
{
$title = _wp('By ordered product quantity');
$select = waHtmlControl::getControl(waHtmlControl::SELECT, 'rules[%ID%][rule_data]', [
'options' => [
10 => _wp('10+ items'),
5 => _wp('6–10 items'),
1 => _wp('1–5 items'),
],
'title' => $title,
'control_wrapper' => '<div class="wide">%s%s</div>'
]);
$html = <<<HTML
<script id="{$this->id}_condition_template">
{$select}
</script>
<script>
(function() {
const template_form = $('#{$this->id}_condition_template').html();
const table_tbody = $('#s-settings-stock-rules-form table tbody').first();
table_tbody.on('rules:condition_init.{$this->id}', '.stock-rule-condition', function(event) {
const condition_wrapper = $(this);
const template = template_form.replace(/%ID%/g, event.rule_id);
condition_wrapper.find('input[name$="[rule_data]"]').replaceWith($.parseHTML(template));
condition_wrapper.find('select[name$="[rule_data]"]').val(event.rule_data);
});
})();
</script>
HTML;
return [
'id' => $this->id,
'name' => $title,
'init_html' => $html,
'custom_html' => '<script>/* E.g., some additional JavaScript snippet */</script>'
];
}









