사진과 같이 필수정보 반드시 입력 옵션을 체크하면 계속 리다이렉트되어 정보 업데이트로 넘어가고 있습니다.
필수정보를 입력을 하였음에도 계속 리다이렉트 되더군요 무엇때문인지.. 시정해주세요
3.20에서 username 필드키가 추가되었다는데 이것때문인가요?
안녕하세요~^^
WP Members 플러그인이 업데이트 되면서 username 필드를 필수로 설정한 듯합니다.
FTP로 접속해서 /wp-content/plugins/cosmosfarm-members/class/Cosmosfarm_Members.class.php 파일에
아래의 코드를 찾아서
public function register_data($fields, $toggle){
$option = get_cosmosfarm_members_option();
if($toggle == 'new'){
if($option->allow_email_login){
if(is_multisite()){
$fields['username'] = sanitize_user($fields['user_email']);
}
$user_nicename = isset($_POST['user_nicename']) ? sanitize_user($_POST['user_nicename']) : '';
$display_name = isset($_POST['display_name']) ? sanitize_user($_POST['display_name']) : '';
$nickname = isset($_POST['nickname']) ? sanitize_user($_POST['nickname']) : '';
$user_email = explode('@', $fields['user_email']);
$display = reset($user_email);
$display = sanitize_user($display);
$fields['user_nicename'] = $user_nicename ? $user_nicename : $display;
$fields['display_name'] = $display_name ? $display_name : $display;
$fields['nickname'] = $nickname ? $nickname : $display;
}
}
else if($toggle == 'edit'){
unset($fields['username']);
}
return $fields;
}
아래의 코드로 교체해보시겠어요?
public function register_data($fields, $toggle){
$option = get_cosmosfarm_members_option();
if($toggle == 'new'){
if($option->allow_email_login){
add_action('user_register', array($this, 'user_register_allow_email_login'));
$user_nicename = isset($_POST['user_nicename']) ? sanitize_user($_POST['user_nicename']) : '';
$display_name = isset($_POST['display_name']) ? sanitize_user($_POST['display_name']) : '';
$nickname = isset($_POST['nickname']) ? sanitize_user($_POST['nickname']) : '';
$user_email = explode('@', $fields['user_email']);
$display = reset($user_email);
$display = sanitize_user($display);
$fields['user_nicename'] = $user_nicename ? $user_nicename : $display;
$fields['display_name'] = $display_name ? $display_name : $display;
$fields['nickname'] = $nickname ? $nickname : $display;
}
}
else if($toggle == 'edit'){
unset($fields['username']);
}
return $fields;
}
public function user_register_allow_email_login($user_id){
$user = get_userdata($user_id);
if(!$user->username){
add_user_meta($user_id, 'username', $user->user_email, true);
}
}
아래의 코드를 찾아서
foreach($wpmem_fields as $meta_key=>$field){
if($field['required'] && !in_array($meta_key, array('password', 'confirm_password', 'password_confirm'))){
if($meta_key == 'confirm_email') $meta_key = 'user_email';
if(!$current_user->{$meta_key}){
echo '<script>alert("'.__('Please enter the required information.', 'cosmosfarm-members').'");</script>';
echo "<script>window.location.href='{$profile_url}';</script>";
return;
}
}
}
아래의 코드로 교체해보시겠어요?
$meta_arr = $option->allow_email_login ? array('username', 'password', 'confirm_password', 'password_confirm') : array('password', 'confirm_password', 'password_confirm');
foreach($wpmem_fields as $meta_key=>$field){
if($field['required'] && !in_array($meta_key, $meta_arr)){
if($meta_key == 'confirm_email') $meta_key = 'user_email';
if(!$current_user->{$meta_key}){
echo '<script>alert("'.__('Please enter the required information.', 'cosmosfarm-members').'");</script>';
echo "<script>window.location.href='{$profile_url}';</script>";
return;
}
}
}
빠른 시일 내에 업데이트에 반영하도록 하겠습니다.
고맙습니다.