Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > WordPress и другие CMS
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.07.2017, 23:18   #1
ubun
Форумчанин
 
Аватар для ubun
 
Регистрация: 06.12.2010
Сообщений: 198
По умолчанию woocommerce регистрация с подтверждением

как не создавать аккаунта без подтверждения по емайл? Нужно ,чтобы пользователь не смог зайти на свой личный кабинет пока не подтвердился. пользуюсь woocommerce. использую для авторизации плагин phoenix login/signup.
сайт tamadapro.ru
добавил вот такой код для подтверждения:
Код:
// this is just to prevent the user log in automatically after register
function wc_registration_redirect( $redirect_to ) {
        wp_logout();
        wp_redirect( '/my-account/?q=');
        exit;
}
// when user login, we will check whether this guy email is verify
function wp_authenticate_user( $userdata ) {
        $isActivated = get_user_meta($userdata->ID, 'is_activated', true);
        if ( !$isActivated ) {
                $userdata = new WP_Error(
                                'inkfool_confirmation_error',
                                __( '<strong>Внимание:</strong> Ваш аккаунт неактивен. Пожалуйста, перейдите по ссылке в письме, высланном Вам на почту. <a href="/my-account/?u='.$userdata->ID.'">Выслать снова.</a>', 'inkfool' )
                                );
        }
        return $userdata;
}
// when a user register we need to send them an email to verify their account
function my_user_register($user_id) {
        // get user data
        $user_info = get_userdata($user_id);
        // create md5 code to verify later
        $code = md5(time());
        // make it into a code to send it to user via email
        $string = array('id'=>$user_id, 'code'=>$code);
        // create the activation code and activation status
        update_user_meta($user_id, 'is_activated', 0);
        update_user_meta($user_id, 'activationcode', $code);
        // create the url
        $url = get_site_url(). '/my-account/?p=' .base64_encode( serialize($string));
        // basically we will edit here to make this nicer
        $html = 'Для подтверждения email-адреса перейдите по ссылке<br/><br/> <a href="'.$url.'">'.$url.'</a>';
        // send an email out to user
        wc_mail($user_info->user_email, __('Подтверждение Email-адреса'), $html);
}
// we need this to handle all the getty hacks i made
function my_init(){
        // check whether we get the activation message
        if(isset($_GET['p'])){
                $data = unserialize(base64_decode($_GET['p']));
                $code = get_user_meta($data['id'], 'activationcode', true);
                // check whether the code given is the same as ours
                if($code == $data['code']){
                        // update the db on the activation process
                        update_user_meta($data['id'], 'is_activated', 1);
                        wc_add_notice( __( '<strong>Поздравляем:</strong> Ваш аккаунт активирован! ', 'inkfool' )  );
                }else{
                        wc_add_notice( __( '<strong>Ошибка:</strong> Ваш аккаунт не активирован. ', 'inkfool' )  );
                }
        }
        if(isset($_GET['q'])){
                wc_add_notice( __( '<strong>Внимание:</strong> Подтвердите Ваш email-адрес.', 'inkfool' ) );
        }
        if(isset($_GET['u'])){
                my_user_register($_GET['u']);
                wc_add_notice( __( '<strong>Внимание:</strong> Письмо с кодом активации выслано повторно. Проверьте Ваш email.', 'inkfool' ) );
        }
}
// hooks handler
add_action( 'init', 'my_init' );
add_filter('woocommerce_registration_redirect', 'wc_registration_redirect');
add_filter('wp_authenticate_user', 'wp_authenticate_user',10,2);
add_action('user_register', 'my_user_register',10,2);

// end confirm
ubun вне форума Ответить с цитированием
Старый 27.01.2018, 22:10   #2
teknobard
Новичок
Джуниор
 
Регистрация: 27.01.2018
Сообщений: 1
По умолчанию

Приветствую тебя, о великий!
Подскажи, пожалуйста, в какой файл добавлять данный код.
Может ли это добавление не создавать заказ до того, как подтвержден имейл?
Мне нужно, чтобы покупатель не мог создавать заказ до того, как его мейл будет проверен.
Спасибо огромное и всех благ!
teknobard вне форума Ответить с цитированием
Старый 21.02.2018, 10:56   #3
СтудПом
Форумчанин
 
Регистрация: 08.11.2017
Сообщений: 347
По умолчанию

Если б не пользовали левые плагины, всё стало б проще - сперва проверяете e-mail и в момент подтверждения создаёте аккаунт.
СтудПом вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск по категориям WooCommerce WP The last hope PHP 1 12.07.2017 13:05
CSS - WordPress. WooCommerce plugin Sagrada WordPress и другие CMS 1 12.05.2017 21:18
Пофиксить Woocommerce + Paypal Oly-oly Фриланс 0 10.02.2015 14:30
Нужно доработать Woocommerce eastimpex Фриланс 1 07.12.2013 20:12