Вообще, в WooCommerce существуют некоторые настройки относительно Политики конфиденциальности, они находятся в WooCommerce > Настройки > Учётки и приватность, однако они не позволяют добавить именно чекбокс (галочку) принятия этих политик.
В этом уроке добавим галку сами, причём отдельно – на страницу оформления заказа, и отдельно – на страницу регистрации пользователя.
В результате у нас получится вот такой чекбокс с произвольным сообщением об ошибке, если он не отмечен:
На моём сайте есть также отдельный видеоурок про страницу оформления заказа WooCommerce, вот ссылка на него.
Код для functions.php
вашей текущей / дочерней темы:
// Добавление чекбокса add_action( 'woocommerce_review_order_before_submit', 'truemisha_privacy_checkbox', 25 ); function truemisha_privacy_checkbox() { woocommerce_form_field( 'privacy_policy_checkbox', array( 'type' => 'checkbox', 'class' => array( 'form-row' ), 'label_class' => array( 'woocommerce-form__label-for-checkbox' ), 'input_class' => array( 'woocommerce-form__input-checkbox' ), 'required' => true, 'label' => 'Принимаю <a href="' . get_privacy_policy_url() . '">Политику конфиденциальности</a>', )); } // Валидация add_action( 'woocommerce_checkout_process', 'truemisha_privacy_checkbox_error', 25 ); function truemisha_privacy_checkbox_error() { if ( empty( $_POST[ 'privacy_policy_checkbox' ] ) ) { wc_add_notice( 'Ваш нужно принять политику конфиденциальности.', 'error' ); } }
Теперь попробуем сделать что-то подобное и для формы регистрации WooCommerce.
// Добавление чекбокса add_action( 'woocommerce_register_form', 'truemisha_registration_privacy_checkbox', 25 ); function truemisha_registration_privacy_checkbox() { woocommerce_form_field( 'privacy_policy_reg', array( 'type' => 'checkbox', 'class' => array( 'form-row' ), 'label_class' => array( 'woocommerce-form__label-for-checkbox' ), 'input_class' => array( 'woocommerce-form__input-checkbox' ), 'required' => true, 'label' => 'Принимаю <a href="' . get_privacy_policy_url() . '">Политику конфиденциальности</a>', ) ); } // Валидация add_filter( 'woocommerce_registration_errors', 'truemisha_registration_privacy_checkbox_error', 25 ); function truemisha_registration_privacy_checkbox_error( $errors ) { if( is_checkout() ) { return $errors; } if ( empty( $_POST[ 'privacy_policy_reg' ] ) ) { $errors->add( 'privacy_policy_reg_error', 'Ваш нужно принять политику конфиденциальности.' ); } return $errors; }
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.