Почему у меня не работают функции формы min и max? - PullRequest
0 голосов
/ 20 января 2019

Я создал пользовательскую форму для отображения на странице оформления заказа Wordpress Woocommerce, где пользователь должен выбрать свой возраст перед совершением покупки.

Идея в том, чтобы люди младше 18 лет не могли совершить покупку.

В настоящее время код отображает форму, и она полностью настроена, но функции 'min' и 'max', которые мне потребуются, чтобы ограничить вставку по возрасту между 18 и 99, по какой-то причине не применяются. Что мне требуется для того, чтобы функции min и max применялись?

add_action('woocommerce_after_order_notes', 'custom_checkout_field');

function custom_checkout_field($checkout)
{
    echo '<div id="custom_checkout_field"><h3>' . __('Vanusepiirang') . '</h3>';

    woocommerce_form_field('custom_field_name', array(
        'type'      => 'number',
        'id'        => 'vanusepiirang',
        'name'      => 'vanusepiirang',
        'min'       =>  18,
        'max'       =>  99,
        'required'  =>  1,
        'class'     => array(
            'my-field-class form-row-wide'
        ),
        'label'     => __('Sisestage enda vanus. Teie sünnipäeva küsime kinnituseks, et olete piisavalt vana ostukorvis olevate toodete ostmiseks.') ,
        'placeholder' => __('Teie vanus') ,
    ),

    $checkout->get_value('custom_field_name'));
    echo '</div>';
}

Я ожидаю, что функции 'min' и 'max' будут применены к форме, чтобы цифры 1-17 не могли быть пропущены.

Ответы [ 2 ]

0 голосов
/ 20 января 2019

Согласно определению функции woocommerce_form_field атрибуты max и min должны передаваться как custom_attribute.Ваш окончательный код должен быть изменен, как показано ниже:

add_action('woocommerce_after_order_notes', 'custom_checkout_field');

function custom_checkout_field($checkout)
{
    echo '<div id="custom_checkout_field"><h3>' . __('Vanusepiirang') . '</h3>';

    woocommerce_form_field('custom_field_name', array(
        'type'      => 'number',
        'id'        => 'vanusepiirang',
        'name'      => 'vanusepiirang',
        'custom_attributes' => array(
            'min'       =>  18,
            'max'       =>  99,
        ),
        'required'  =>  1,
        'class'     => array(
            'my-field-class form-row-wide'
        ),
        'label'     => __('Sisestage enda vanus. Teie sünnipäeva küsime kinnituseks, et olete piisavalt vana ostukorvis olevate toodete ostmiseks.') ,
        'placeholder' => __('Teie vanus') ,
    ),

    $checkout->get_value('custom_field_name'));
    echo '</div>';
}

Также вы должны учитывать, что первый аргумент функции woocommerce_form_field - это имя поля и идентификатор, если только вы не передаете параметр ID отдельно во втором аргументе,Это означает, что из-за сгенерированного ключевого значения 'name' => 'vanusepiirang' входной HTML будет содержать два разных атрибута имени.Я рекомендую удалить часть 'name' => 'vanusepiirang' из вашего исходного кода.

0 голосов
/ 20 января 2019

В некотором роде мне помогло другое решение:)

Добавил это в мою 'функцию проверки пустого поля':

else if ($_POST['custom_field_name'] < ('18'))
    wc_add_notice(__('Te pole piisavalt vana nende toodete ostmiseks!') , 'error');
else if ($_POST['custom_field_name'] > ('99'))
    wc_add_notice(__('Palun sisesta korrektne vanus!') , 'error');
...