Intereting Posts
Сайт застрял в цикле «Обновление базы данных» Как фильтровать $ content в функции короткого кода Какие файлы обновляются в обновлении плагина? Перемещение wp-config.php: Это можно сделать после запуска сайта? Как загрузить несколько иерархических категорий из functions.php Проблема форматирования короткого кода и пробелов save_post для включения фильтра wp_insert_post_data, сбора информации о метаполе и предотвращения бесконечного цикла HTML-теги, не отображаемые в выдержке Последние комментарии на странице автора? template_url в качестве значения по умолчанию Планируемое событие WordPress не работает Может ли «числопостов» передаваться в строке запроса URL-адреса? Заказ пользовательского типа сообщений несколькими настраиваемыми полями Сопоставление субдоменов в WordPress, чтобы создать локализованный сайт, лучший подход? Показать сообщения в Google Map

Не удалось войти с использованием имени пользователя

На моем веб-сайте у меня есть регистрация и подпись. А также я предоставляю веб-службы для регистрации и входа в форму.

Поток сети, а также мобильное приложение:

  • Для каждой регистрации зарегистрированные пользователи получают ссылку активации

Ниже приведен код, отвечающий за отправку ссылки активации:

// 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>ERROR:</strong> Your account has to be activated before you can login. You can resend by clicking <a href="/register/?u='.$userdata->ID.'">here</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(). '/register/?p=' .base64_encode( serialize($string)); // basically we will edit here to make this nicer $html = 'Please click the following links <br/><br/> <a href="'.$url.'">'.$url.'</a>'; // send an email out to user wc_mail($user_info->user_email, __('Please activate your account'), $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>Success:</strong> Your account has been activated! ', 'inkfool' ) ); }else{ wc_add_notice( __( '<strong>Error:</strong> Activation fails, please contact our administrator. ', 'inkfool' ) ); } } if(isset($_GET['q'])){ wc_add_notice( __( '<strong>Error:</strong> Your account has to be activated before you can login. Please check your email.', 'inkfool' ) ); } if(isset($_GET['u'])){ my_user_register($_GET['u']); wc_add_notice( __( '<strong>Succes:</strong> Your activation email has been resend. Please check your 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); 

Проблема, с которой сталкивается:

  • Все работает нормально, когда дело доходит до регистрации с мобильного, зарегистрированный пользователь не может войти с использованием имени пользователя с веб-сайта, но может войти в систему с помощью электронной почты. Однако пользователи могут успешно войти в систему через мобильное приложение через имя пользователя, а также по электронной почте.