为什么我的"最小"和"最大"表单函数不起作用?



我制作了一个自定义表单以显示在Wordpress Woocommerce结帐页面中,用户必须在购买前选择他们的年龄。

这个想法是为了让 18 岁以下的人无法购买。

目前,代码显示表单并且已全部设置好,但由于某种原因,我需要将年龄插入限制在 18 到 99 之间的"最小"和"最大"功能不适用。我需要什么才能应用"最小"和"最大"功能?

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>';
}

我希望"最小"和"最大"功能应用于表单,因此数字 1-17 无法通过。

根据woocommerce_form_field函数定义,maxmin 属性必须作为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,除非您在第二个参数中单独传递 ID 参数。这意味着,由于键值生成的输入 html 'name' => 'vanusepiirang'将包含两个不同的 name 属性。我建议从源代码中删除'name' => 'vanusepiirang'部分。

有点

帮助自己解决一种不同的解决方案:)

将其添加到我的"空字段检查功能"中:

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');

最新更新