Проверка дополнительного поля флажка на странице оформления заказа WooCommerce - PullRequest
1 голос
/ 03 августа 2020

Я добавил на страницу оформления заказа поле принятия под полем условий. Новое поле касается проверки возраста.

Во внешнем интерфейсе я вижу свой флажок, но покупатель не сможет делать заказы, если этот флажок не установлен. Это сгенерированный код html:

<?php if ( wc_terms_and_conditions_checkbox_enabled() ) : ?>
            <p class="form-row validate-required">
                <label class="woocommerce-form__label woocommerce-form__label-for-checkbox checkbox">
                <input type="checkbox" class="woocommerce-form__input woocommerce-form__input-checkbox input-checkbox" name="terms" <?php checked( apply_filters( 'woocommerce_terms_is_checked_default', isset( $_POST['terms'] ) ), true ); // WPCS: input var ok, csrf ok. ?> id="terms" />
                    <span class="woocommerce-terms-and-conditions-checkbox-text"><?php wc_terms_and_conditions_checkbox_text(); ?></span>&nbsp;<span class="required">*</span>
                </label>
                <input type="hidden" name="terms-field" value="1" />
            </p>
        <?php endif; ?>
                        <p class="form-row validate-required">
                <label class="woocommerce-form__label woocommerce-form__label-for-checkbox checkbox">
                <input type="checkbox" class="woocommerce-form__input woocommerce-form__input-checkbox input-checkbox" required name="validationage"  id="validationage" />
                    <span class="woocommerce-terms-and-conditions-checkbox-text"><?php _e( 'Je certifie avoir + de 18 ans', 'woocommerce'); ?></span>&nbsp;<span class="required">*</span>
                </label>
            </p>

Как включить проверку для этого флажка?

Ответы [ 2 ]

2 голосов
/ 03 августа 2020

Следующее будет обрабатывать вашу настраиваемую проверку поля флажка на странице оформления заказа:

add_action('woocommerce_checkout_process', 'custom_checkbox_checkout_validation');
function custom_checkbox_checkout_validation() {
    $field_id = 'validationage';

    if( ! isset( $_POST[$field_id] ) || empty( $_POST[$field_id] ) )
        wc_add_notice( __("validation text.","woocommerce"), "error" );
}

Код входит в функции. php файл вашей активной дочерней темы (или активной темы). Должно работать.

0 голосов
/ 04 августа 2020

Было бы намного лучше, если бы вы использовали woocommerce_after_checkout_validation хуки, это позволит вам синхронизироваться c с другой ошибкой проверки WooCommerce

add_action( 'woocommerce_after_checkout_validation', function( $data, &$errors ) {
    $field_id = 'validationage';
    if( ! isset( $data[$field_id] ) || empty( $data[$field_id] ) ) {
       $errors->add( 'terms', __( 'validation text.', 'theme-slug' ) );
    }
},10, 2  );

Примечание: вам может потребоваться используйте woocommerce_checkout_fields фильтр, чтобы добавить настраиваемое поле проверки.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...