backend_prod_sku_fields

Позволяет добавлять дополнительные поля в форму редактирования модификации товара в новом интерфейсе (2.0).

Доступно начиная с версии 8.18.0.

Shop-Script

Входящие параметры (передаются по ссылке)

$params['product'] object Экземпляр класса shopProduct со свойствами текущего товара.
… код плагина …

Результат работы плагина

{$backend_prod_sku_fields.$output}
Массив дополнительных полей для настройки модификаций товара. Каждый элемент, соответствующий отдельному полю, должен представлять собой подмассив со следующими ключами:
  • 'type' — тип поля ('price' — для добавления дополнительных полей рядом с ценой артикула, 'input', 'textarea', 'select', 'help' — для добавления произвольного фрагмента HTML-кода, например, подсказки для пользователя);
  • 'name' — локализованный заголовок поля;
  • 'default_value' — значение поля по умолчанию (используется при добавлении новой модификации товара);
  • 'tooltip' — локализованный текст для всплывающей подсказки рядом с полем;
  • 'css_class' — имена CSS-классов, которые нужно применить к контейнеру с селектором 'div.wa-field', внутри которого добавляется поле;
  • 'validate' — подмассив с необязательными булевыми ключами 'required' (поле является обязательным для заполнения) и 'numbers' (в поле можно вводить только числа);
  • 'sku_values' — значения поля для каждой модификации товара в виде массива с ID модификаций в качестве ключей.
Shop-Script

Пример кода плагина

PHP

public function backendProdSkuFields($params)
{
    /** @var shopProduct */
    $product = $params['product'];

    $values = [
        'price' => [],
        'textarea' => [],
        'select' => [],
        'input' => [],
        'help' => [],
    ];

    foreach (array_keys($product->getSkus()) as $variant_id) {
        $values['price'][$variant_id] = rand(0, 10000);
        $values['textarea'][$variant_id] = sprintf_wp('Variant #%d textarea value', $variant_id);
        $values['select'][$variant_id] = floor(rand(0, 3));
        $values['input'][$variant_id] = sprintf_wp('variant #%d input value', $variant_id);
        $values['help'][$variant_id] = _wp('Everything’s fine.');
    }

    return [
        [
            'type' => 'price',
            'id' => $this->id . '_price',
            'name' => _wp('My plugin’s price'),
            'css_class' => $this->id . '-price',
            'validate' => [
                'required' => true,
                'numbers' => true,
            ],
            'sku_values' => $values['price'],
            'default_value' => '0',
        ],
        [
            'type' => 'input',
            'id' => $this->id . '_input',
            'name' => _wp('My plugin’s input'),
            'css_class' => $this->id . '-input',
            'tooltip' => _wp('My plugin’s input hint'),
            'sku_values' => $values['input'],
            'default_value' => 'default input value',
        ],
        [
            'type' => 'textarea',
            'id' => $this->id . '_textarea',
            'name' => _wp('My plugin’s textarea'),
            'css_class' => $this->id . '-textarea',
            'tooltip' => _wp('My plugin’s textarea hint'),
            'sku_values' => $values['textarea'],
            'default_value' => 'default textarea value',
        ],
        [
            'type' => 'select',
            'id' => $this->id . '_select',
            'name' => _wp('My plugin’s select'),
            'css_class' => $this->id . '-select',
            'tooltip' => _wp('My plugin’s select hint'),
            'options' => [
                [
                    'name' => _wp('zero'),
                    'value' => 0,
                ],
                [
                    'name' => _wp('one'),
                    'value' => 1,
                ],
                [
                    'name' => _wp('two'),
                    'value' => 2,
                ],
                [
                    'name' => _wp('three'),
                    'value' => 3,
                ],
            ],
            'sku_values' => $values['select'],
            'default_value' => 0,
        ],
        [
            'type' => 'help',
            'id' => $this->id . '_help',
            'name' => _wp('My plugin’s notice'),
            'css_class' => $this->id . '-help',
            'placement' => 'bottom',
            'sku_values' => $values['help'],
            'default_value' => _wp('User, beware!'),
        ],
    ];
}