Последние несколько недель мы провели много времени над работой над «допиливанием» движка интернет-магазина WooCommerce «под себя», и, в частности, над возвращением некоторого утраченного функционала в версии WooCommerce 2.1 по сравнению с WooCommerce 2.0.
Эта статья будет посвящена одной из таких фич, исчезнувших в WooCommerce 2.0. В WooCommerce 2.1 было убрано поле подтверждения пароля и фунционал этой фичи со страницы размещения заказа со следующей мотивацией: если покупатель сделает опечатку в поле пароля, то этот самый пароль позже можно с легкостью сбросить с помощью функционала сброса пароля в WooCommerce.
Однако, если все же хотите добавить поле подтверждение пароля на вашу страницу размещения заказа в WooCommerce 2.1, у нас для вас хорошие новости — это возможно.
Код ниже добавит дополнительное поле под основным полем для пароля на странице размещения заказа под названием «Подтверждение пароля» и когда покупатель будет размещать заказ, движок сверит два поля между собой и выдаст сообщение об ошибке, если пароли не совпадут.
Вставьте следующий код в файл functions.php вашей темы:
<?php // вставьте следующий код в файл functions.php вашей темы: // добавляем второе поле для пароля на страницу размещения заказа. add_action( 'woocommerce_checkout_init', 'wc_add_confirm_password_checkout', 10, 1 ); function wc_add_confirm_password_checkout( $checkout ) { if ( get_option( 'woocommerce_registration_generate_password' ) == 'no' ) { $checkout->checkout_fields['account']['account_password2'] = array( 'type' => 'password', 'label' => __( 'Подтверждение пароля', 'woocommerce' ), 'required' => true, 'placeholder' => _x( 'Подтверждение пароля', 'placeholder', 'woocommerce' ) ); } } // Проверяем поля пароля и подтверждения пароля, прежде чем переходить к оплате. add_action( 'woocommerce_after_checkout_validation', 'wc_check_confirm_password_matches_checkout', 10, 2 ); function wc_check_confirm_password_matches_checkout( $posted ) { $checkout = WC()->checkout; if ( ! is_user_logged_in() && ( $checkout->must_create_account || ! empty( $posted['createaccount'] ) ) ) { if ( strcmp( $posted['account_password'], $posted['account_password2'] ) !== 0 ) { wc_add_notice( __( 'Passwords do not match.', 'woocommerce' ), 'error' ); } } } ?>
По всем вопросам и отзывам просьба писать в комментарии ниже.
Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.