Добрый день Уважаемые авторы, спасибо за замечательный плагин wp-recall
Скажите пожалуйста как сделать что бы вместо именя пользователя использовался только email ?
Так как стандартное имя можно вводить только на латинице хочу для регистрации сделать email и пароль, но стандартное имя убрать не получается. Нарпимер в Cimy User Extra Fields for WordPress есть такая фишка, но там нет профиля как у Вас!
Заранее спасибо за ответ!
Можете сделать так:
1. открываете файл wp-contentpluginswp-recalltemplatesform-register.php и удаляете из него поле для указания логина.
2. открываете файл wp-content/plugins/wp-recall/functions/register.php и заменяете строку 109
$login = sanitize_user($_POST['user_login']);
на
$login = $_POST['user_email'];
Исправил. Кому надо, код register.php тут:
<?php function rcl_insert_user($data){ global $wpdb,$rcl_options; if ( get_user_by('email', $data['user_email']) ) return false; if ( get_user_by('login', $data['user_email']) ) return false; $data2 = array( 'user_nicename' => '' ,'nickname' => $data['user_email'] ,'first_name' => $data['display_name'] ,'rich_editing' => 'true' // false - выключить визуальный редактор для пользователя. ); $userdata = array_merge($data,$data2); $user_id = wp_insert_user( $userdata ); if(!$user_id) return false; $wpdb->insert( RCL_PREF .'user_action', array( 'user' => $user_id, 'time_action' => current_time('mysql') )); if($rcl_options['confirm_register_recall']==1) wp_update_user( array ('ID' => $user_id, 'role' => 'need-confirm') ) ; rcl_register_mail(array( 'user_id'=>$user_id, 'user_pass'=>$userdata['user_pass'], 'user_login'=>$userdata['user_login'], 'user_email'=>$userdata['user_email'] )); wp_send_new_user_notifications( $user_id, 'admin' ); return $user_id; } //подтверждаем регистрацию пользователя по ссылке function rcl_confirm_user_registration(){ global $wpdb,$rcl_options; $reglogin = $_GET['rglogin']; $regpass = $_GET['rgpass']; $regcode = md5($reglogin); if($regcode==$_GET['rgcode']){ if ( $user = get_user_by('login', $reglogin) ){ wp_update_user( array ('ID' => $user->ID, 'role' => get_option('default_role')) ) ; $time_action = current_time('mysql'); $action = $wpdb->get_var($wpdb->prepare("SELECT time_action FROM ".RCL_PREF."user_action WHERE user = '%d'",$user->ID)); if(!$action)$wpdb->insert( RCL_PREF.'user_action', array( 'user' => $user->ID, 'time_action' => $time_action ) ); $creds = array(); $creds['user_login'] = $reglogin; $creds['user_password'] = $regpass; $creds['remember'] = true; $sign = wp_signon( $creds, false ); if ( !is_wp_error($sign) ){ rcl_update_timeaction_user(); do_action('rcl_confirm_registration',$user->ID); wp_redirect(rcl_get_authorize_url($user->ID) ); exit; } } } if($rcl_options['login_form_recall']==2){ wp_safe_redirect( 'wp-login.php?checkemail=confirm' ); }else{ wp_redirect( get_bloginfo('wpurl').'?action-rcl=login&error=confirm' ); } exit; } //принимаем данные для подтверждения регистрации add_action('init', 'rcl_confirm_user_resistration_activate'); function rcl_confirm_user_resistration_activate(){ global $rcl_options; if (isset($_GET['rgcode'])&&isset($_GET['rglogin'])){ if($rcl_options['confirm_register_recall']==1) add_action( 'wp', 'rcl_confirm_user_registration' ); } } //добавляем коды ошибок для тряски формы ВП add_filter('shake_error_codes','rcl_add_shake_error_codes'); function rcl_add_shake_error_codes($codes){ return array_merge ($codes, array( 'rcl_register_login', 'rcl_register_empty', 'rcl_register_email', 'rcl_register_login_us', 'rcl_register_email_us' )); } //регистрация пользователя на сайте function rcl_get_register_user($errors){ global $wpdb,$rcl_options,$wp_errors; $wp_errors = new WP_Error(); if( count( $errors->errors ) ) { $wp_errors = $errors; return $wp_errors; } $pass = sanitize_text_field($_POST['user_pass']); $email = $_POST['user_email']; $login = $_POST['user_email']; $ref = ($_POST['redirect_to'])? apply_filters('url_after_register_rcl',esc_url($_POST['redirect_to'])): wp_registration_url(); $get_fields = get_option( 'rcl_profile_fields' ); $requared = true; if($get_fields){ foreach((array)$get_fields as $custom_field){ $custom_field = apply_filters('chek_custom_field_regform',$custom_field); if(!$custom_field) continue; $slug = $custom_field['slug']; if($custom_field['requared']==1&&$custom_field['register']==1){ if($custom_field['type']=='checkbox'){ $chek = explode('#',$custom_field['field_select']); $count_field = count($chek); for($a=0;$a<$count_field;$a++){ if(!isset($_POST[$slug][$a])){ $requared = false; }else{ $requared = true; break; } } }else if($custom_field['type']=='file'){ if(!isset($_FILES[$slug])) $requared = false; }else{ if(!$_POST[$slug]) $requared = false; } } } } if(!$pass||!$email||!$login||!$requared){ $wp_errors->add( 'rcl_register_empty', __('Fill in the required fields!','wp-recall') ); return $wp_errors; } $wp_errors = apply_filters( 'rcl_registration_errors', $wp_errors, $login, $email ); if ( $wp_errors->errors ) return $wp_errors; do_action('pre_register_user_rcl',$ref); //регистрируем юзера с указанными данными $userdata = array( 'user_pass'=>$pass, 'user_login'=>$login, 'user_email'=>$email, 'display_name'=>$fio ); $user_id = rcl_insert_user($userdata); if($user_id){ if($rcl_options['login_form_recall']==2||false !== strpos($ref, 'wp-login.php')){ //если форма ВП, то возвращаем на login с нужными GET-параметрами if($rcl_options['confirm_register_recall']==1) wp_safe_redirect( 'wp-login.php?checkemail=confirm' ); else wp_safe_redirect( 'wp-login.php?checkemail=registered' ); }else{ //иначе возвращаем на ту же страницу if($rcl_options['confirm_register_recall']==1) wp_redirect(rcl_format_url($ref).'action-rcl=login&success=confirm-email'); else wp_redirect(rcl_format_url($ref).'action-rcl=login&success=true'); } exit(); } } add_filter('registration_errors','rcl_get_register_user',90); //принимаем данные с формы регистрации add_action('wp', 'rcl_get_register_user_activate'); function rcl_get_register_user_activate ( ) { if ( isset( $_POST['submit-register'] ) ) { //если данные пришли с формы wp-recall if( !wp_verify_nonce( $_POST['_wpnonce'], 'register-key-rcl' ) ) return false; $email = $_POST['user_email']; $login = $_POST['user_email']; register_new_user($login,$email); } } //письмо высылаемое при регистрации function rcl_register_mail($userdata){ global $rcl_options; $subject = __('Confirm your registration!','wp-recall'); $textmail = ' <p>'.__('You or someone else signed up on the website','wp-recall').' "'.get_bloginfo('name').'" '.__('with the following data:','wp-recall').'</p> <p>'.__('Login','wp-recall').': '.$userdata['user_login'].'</p> <p>'.__('Password','wp-recall').': '.$userdata['user_pass'].'</p>'; if($rcl_options['confirm_register_recall']==1){ $url = get_bloginfo('wpurl').'/?rglogin='.$userdata['user_login'].'&rgpass='.$userdata['user_pass'].'&rgcode='.md5($userdata['user_login']); $textmail .= '<p>Если это были вы, то подтвердите свою регистрацию перейдя по ссылке ниже:</p> <p><a href="'.$url.'">'.$url.'</a></p> <p>Не получается активировать аккаунт?</p> <p>Скопируйте текст ссылки ниже, вставьте его в адресную строку вашего браузера и нажмите Enter</p>'; } $textmail .= '<p>'.__('If it wasnt you, then just ignore this email','wp-recall').'</p>'; rcl_mail($userdata['user_email'], $subject, $textmail); } //сохраняем данные произвольных полей профиля при регистрации add_action('user_register','rcl_register_user_data',10); function rcl_register_user_data($user_id){ update_user_meta($user_id, 'show_admin_bar_front', 'false'); $cf = new Rcl_Custom_Fields(); $cf->register_user_metas($user_id); } //Формируем массив сервисных сообщений формы регистрации и входа function rcl_notice_form($form='login'){ global $wp_errors; if ( isset($wp_errors->errors)&&$wp_errors->errors ) { $errors = ''; $messages = ''; foreach ( $wp_errors->errors as $code ) { $severity = true; foreach ( $code as $error_message ) { if ( 'message' == $severity ) $messages .= ' ' . $error_message . "<br /> "; else $errors .= '<span class="error">' . $error_message . "</span> "; } } if ( ! empty( $errors ) ) { echo '<div id="login_error">' . apply_filters( 'login_errors', $errors ) . "</div> "; } if ( ! empty( $messages ) ) { echo '<span class="error">' . apply_filters( 'login_messages', $messages ) . "</span> "; } } if(!isset($_GET['action-rcl'])||$_GET['action-rcl']!=$form) return; $vls = array( 'register'=> array( 'success'=>array( 'true'=>__('Registration is completed!','wp-recall'), 'confirm-email'=>__('Registration is completed! Check your email.','wp-recall') ) ), 'login'=> array( 'error'=>array( 'confirm'=>__('Your email is not confirmed!','wp-recall') ), 'success'=>array( 'true'=>__('Registration is completed! Check your email','wp-recall'), 'confirm-email'=>__('Registration is completed! Check your email.','wp-recall') ) ), 'remember'=> array( 'error'=>array(), 'success'=>array( 'true'=>__('Your password has been sent!<br>Check your email.','wp-recall') ) ) ); $vls = apply_filters('rcl_notice_form',$vls); $gets = explode('&',$_SERVER['QUERY_STRING']); foreach($gets as $gt){ $pars = explode('=',$gt); $get[$pars[0]] = $pars[1]; } $act = $get['action-rcl']; if((isset($get['success']))){ $type = 'success'; }else if(isset($get['error'])){ $type = 'error'; }else{ $type = false; } if(!$type) return false; $notice = (isset($vls[$act][$type][$get[$type]]))? $vls[$act][$type][$get[$type]]:__('Error filling!','wp-recall'); if($form=='login'){ $errors = ''; $errors = apply_filters('login_errors', $errors); if($errors) $notice .= '<br>'.$errors; } if(!$notice) return false; $text = '<span class="'.$type.'">'.$notice.'</span>'; echo $text; } //Проверяем заполненность поля повтора пароля add_filter('rcl_registration_errors','rcl_chek_repeat_pass'); function rcl_chek_repeat_pass($errors){ global $rcl_options; if(!isset($rcl_options['repeat_pass'])||!$rcl_options['repeat_pass']) return false; if($_POST['user_secondary_pass']!=$_POST['user_pass']){ $errors = new WP_Error(); $errors->add( 'rcl_register_repeat_pass', __('Repeat password is not correct!','wp-recall') ); } return $errors; } function rcl_referer_url($typeform=false){ echo rcl_get_current_url($typeform); } function rcl_get_current_url($typeform=false,$urlform = 0){ $protocol = @( $_SERVER["HTTPS"] != 'on' ) ? 'http://': 'https://'; $url = $protocol.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; if ( false !== strpos($url, '?action-rcl') ){ $matches = ''; preg_match_all('/(?<=http://)[A-zА-я0-9/.-sё]*(?=?action-rcl)/iu',$url, $matches); $host = $matches[0][0]; } if ( false !== strpos($url, '&action-rcl') ){ preg_match_all('/(?<=http://)[A-zА-я0-9/._-sё]*(&=&action-rcl)/iu',$url, $matches); $host = $matches[0][0]; } if(!isset($host)||!$host) $host = $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; $host = $protocol.$host; if($urlform) $host = rcl_format_url($host).'action-rcl='.$typeform; if($typeform=='remember') $host = rcl_format_url($host).'action-rcl=remember&success=true'; return $host; } function rcl_form_action($typeform){ echo rcl_get_current_url($typeform,1); } //Добавляем фильтр для формы авторизации add_action('login_form','rcl_filters_signform',1); function rcl_filters_signform(){ $signfields = ''; echo apply_filters('signform_fields_rcl',$signfields); } //Добавляем фильтр для формы регистрации add_action('register_form','rcl_filters_regform',1); function rcl_filters_regform(){ $regfields = ''; echo apply_filters('regform_fields_rcl',$regfields); } add_filter('regform_fields_rcl','rcl_password_regform',5); function rcl_password_regform($content){ global $rcl_options; $difficulty = (isset($rcl_options['difficulty_parole']))? $rcl_options['difficulty_parole']: false; $content .= '<div class="form-block-rcl">' . '<label>'.__('Password','wp-recall').' <span class="required">*</span></label>' . '<div class="default-field"> <span class="field-icon"><i class="fa fa-lock"></i></span>'; if($difficulty==1){ $content .= '<input required id="primary-pass-user" type="password" onkeyup="passwordStrength(this.value)" value="" name="user_pass">'; }else{ $content .= '<input required type="password" value="" id="primary-pass-user" name="user_pass">'; } $content .= '</div>' . '</div>'; if($difficulty==1){ $content .= '<div class="form-block-rcl"> <label>'.__('The password strength indicator','wp-recall').':</label> <div id="passwordStrength" class="strength0"> <div id="passwordDescription">'.__('A password is not entered','wp-recall').'</div> </div> </div>'; } return $content; } //Добавляем поле повтора пароля в форму регистрации add_filter('regform_fields_rcl','rcl_secondary_password',10); function rcl_secondary_password($fields){ global $rcl_options; if(!isset($rcl_options['repeat_pass'])||!$rcl_options['repeat_pass']) return $fields; $fields .= '<div class="form-block-rcl"> <label>'.__('Repeat the password','wp-recall').' <span class="required">*</span></label> <div class="default-field"> <span class="field-icon"><i class="fa fa-lock"></i></span> <input required id="secondary-pass-user" type="password" value="" name="user_secondary_pass"> </div> <div id="notice-chek-password"></div> </div> <script>jQuery(function(){ jQuery(".form-tab-rcl").on("keyup","#secondary-pass-user",function(){ var pr = jQuery("#primary-pass-user").val(); var sc = jQuery(this).val(); var notice; if(pr!=sc) notice = "<span class=error>'.__('The passwords do not match!','wp-recall').'</span>"; else notice = "<span class=success>'.__('The passwords match','wp-recall').'</span>"; jQuery("#notice-chek-password").html(notice); });}); </script>'; return $fields; } //Вывод произвольных полей профиля в форме регистрации add_filter('regform_fields_rcl','rcl_custom_fields_regform',20); function rcl_custom_fields_regform($field){ $get_fields = get_option( 'rcl_profile_fields' ); if($get_fields){ $get_fields = stripslashes_deep($get_fields); $cf = new Rcl_Custom_Fields(); foreach((array)$get_fields as $custom_field){ if($custom_field['register']!=1) continue; $custom_field = apply_filters('custom_field_regform',$custom_field); $class = (isset($custom_field['class']))? $custom_field['class']: ''; $id = (isset($custom_field['id']))? 'id='.$custom_field['id']: ''; $attr = (isset($custom_field['attr']))? ''.$custom_field['attr']: ''; $field .= '<div class="form-block-rcl '.$class.'" '.$id.' '.$attr.'>'; $star = ($custom_field['requared']==1)? ' <span class="required">*</span> ': ''; $field .= '<label>'.$cf->get_title($custom_field).$star.''; if($custom_field['type']) $field .= ':'; $field .= '</label>'; $field .= $cf->get_input($custom_field,$_POST[$custom_field['slug']]); $field .= '</div>'; } } return $field; }