코스모스팜 회원관리 플러그인에서 로그인 -> 로그아웃 -> 로그인에서 숏코드가 작동을 하지 않아요

http://minresearch.co.kr 에서 확인하 실 수 있어요.
테마는 제가 만든 테마를 사용해서, page-login.php 파일에
<?php echo do_shortcode('[cosmosfarm_members_login_form]');?>
숏코드를 넣어서 로그인 화면이 뜨도록 설정했어요.
로그인 후 로그아웃을 하고 다시 로그인을 클릭하면 php 페이지는 잘동작하는 지 확인했는데
숏코드에서 로그인 화면을 띄워주지 못하내요 .
캐쉬랑 쿠키를 모두 지우고 재접속하면 로그인은 다시 정상적으로 동작해요

http://minresearch.co.kr/login/?redirect_to=http%3A%2F%2Fminresearch.co.kr
리다이렉트 주소는 위와 같아요. 설정에서 로그인 페이지, 회원가입 페이지, 회원정보 페이지
페이지로 만들어서, php 동작하도록 파일 만들었는데 ... 왜이럴까요?

워드프레스에서 page를 각 3개 만들고 해당하는 page-*.php 파일 생성해서 숏코드 넣었어요? F12로 콘솔 에러 확인해 봤는데 jQuery mirate 경고가 나오는데, 로그인 창 제대로 작동할때도 발생하는거라 이문제는 아닐거라 생각햇어요. test id : test pasword : test 입니다.
워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
  • 위 문제는 wp_config.php 설정을 바꾸니 해결되었습니다.

    https://wordpress.org/support/topic/cant-log-out-15/

  • 다른 테마에서도 확인해보세요.

    다른 테마에서 정상 동작한다면 지금 사용하시는 테마와 뭔가 충돌이 있는 듯합니다.

    고맙습니다.

  • 안녕하세요~^^

    코드 위치는 다음과 같습니다.

    /wp-content/plugins/cosmosfarm-members/class/Cosmosfarm_Members_Page_Builder.class.php

    Cosmosfarm_Members_Page_Builder.class.php 파일에서 아래 코드를 찾아주세요.

    public function shortcode_login_form($atts=array()){
    	global $wpmem;
    	
    	if(is_user_logged_in()){
    		$layout = apply_filters('cosmosfarm_members_login_form_user_logged_in', '');
    	}
    	else{
    		$layout = do_shortcode('[wpmem_form login]');
    	}
    	
    	if(isset($atts['raw_print']) && $atts['raw_print']){
    		$raw_print_index = Cosmosfarm_Members_Page_Builder::$raw_print_index++;
    		echo '<div data-target="cosmosfarm_members_raw_print_' . $raw_print_index . '" class="cosmosfarm_members_raw_content">' . $layout. '</div>';
    		return '<div id="cosmosfarm_members_raw_print_' . $raw_print_index . '" class="cosmosfarm_members_raw_print"></div>';
    	}
    	
    	return $layout;
    }

    그리고 아래 코드도 확인 해보세요.

    public function form_layout($form, $action){
    	global $cosmosfarm_members_skin;
    	
    	if($action == 'login'){
    		$form = $cosmosfarm_members_skin->login_form($form, $action);
    	}
    	else if($action == 'pwdchange'){
    		$form = $cosmosfarm_members_skin->change_password_form($form, $action);
    	}
    	
    	return $form;
    }

     

    그리고 Cosmosfarm_Members_Skin.class.php 파일에서 아래 코드를 찾아주세요.

    public function login_form($layout, $action){
    	global $post;
    	
    	$option = get_cosmosfarm_members_option();
    	$redirect_to = isset($_REQUEST['redirect_to']) ? $_REQUEST['redirect_to'] : '';
    	
    	if(!$redirect_to && $post->ID == $option->login_page_id){
    		$redirect_to = home_url();
    	}
    	else if(!$redirect_to){
    		$redirect_to = get_permalink();
    	}
    	
    	$redirect_to = apply_filters('cosmosfarm_members_login_redirect_to', $redirect_to);
    	$login_action_url = remove_query_arg(array('verify_email_confirm', 'register_success', 'login_timeout'));
    	
    	if(file_exists(get_stylesheet_directory() . '/cosmosfarm-members/login-form.php')){
    		$skin_path = get_stylesheet_directory_uri() . '/cosmosfarm-members';
    		$file_path = get_stylesheet_directory() . '/cosmosfarm-members/login-form.php';
    	}
    	else{
    		$skin_path = COSMOSFARM_MEMBERS_URL . "/skin/{$option->skin}";
    		$file_path = COSMOSFARM_MEMBERS_DIR_PATH . "/skin/{$option->skin}/login-form.php";
    	}
    	
    	$file_path = apply_filters('cosmosfarm_members_template_login_form', $file_path, $action);
    	
    	if(file_exists($file_path)){
    		ob_start();
    		include $file_path;
    		$layout = ob_get_clean();
    	}
    	
    	return $layout;
    }

     

    메뉴 링크 관련해서는

    /wp-content/plugins/cosmosfarm-members/class/Cosmosfarm_Members.class.php 파일에서 아래 코드를 찾아주세요.

    public function nav_menu_items($items, $menu, $args){
    	if(!is_admin()){
    		if(get_cosmosfarm_menu_add_login() && in_array($menu->slug, get_cosmosfarm_login_menus())){
    			$profile_url = get_cosmosfarm_members_profile_url();
    			
    			$menu_items['login'] = array('title'=>__('Log In', 'cosmosfarm-members'), 'url'=>get_cosmosfarm_members_login_url(), 'order'=>1, 'classes'=>'cosmosfarm-members-login');
    			$menu_items['logout'] = array('title'=>__('Log Out', 'cosmosfarm-members'), 'url'=>get_cosmosfarm_members_logout_url(), 'order'=>1, 'classes'=>'cosmosfarm-members-logout');
    			$menu_items['register'] = array('title'=>__('Register', 'cosmosfarm-members'), 'url'=>wp_registration_url(), 'order'=>2, 'classes'=>'cosmosfarm-members-register');
    			$menu_items['account'] = array('title'=>__('Account', 'cosmosfarm-members'), 'url'=>$profile_url, 'order'=>2, 'classes'=>'cosmosfarm-members-account');
    			
    			$menu_items = apply_filters('cosmosfarm_members_menu_items', $menu_items, $menu, $args);
    			
    			if(is_user_logged_in()){
    				if($menu_items['account']['order'] <= $menu_items['logout']['order']){
    					if($menu_items['account']['url']) $items[] = cosmosfarm_members_menu_item($menu_items['account']);
    					if($menu_items['logout']['url']) $items[] = cosmosfarm_members_menu_item($menu_items['logout']);
    				}
    				else{
    					if($menu_items['logout']['url']) $items[] = cosmosfarm_members_menu_item($menu_items['logout']);
    					if($menu_items['account']['url']) $items[] = cosmosfarm_members_menu_item($menu_items['account']);
    				}
    			}
    			else{
    				if($menu_items['register']['order'] <= $menu_items['login']['order']){
    					if($menu_items['register']['url']) $items[] = cosmosfarm_members_menu_item($menu_items['register']);
    					if($menu_items['login']['url']) $items[] = cosmosfarm_members_menu_item($menu_items['login']);
    				}
    				else{
    					if($menu_items['login']['url']) $items[] = cosmosfarm_members_menu_item($menu_items['login']);
    					if($menu_items['register']['url']) $items[] = cosmosfarm_members_menu_item($menu_items['register']);
    				}
    			}
    		}
    	}
    	return $items;
    }

     

    고맙습니다.

  • 실제로 로그아웃 버튼누르면 로그아웃이 안되어 있는 상태같아요,
    로그아웃 관련 링크를 찾다가 소스코드에서
    "/login/?redirect_to=http://minresearch.co.kr&a=logout">
    로그아웃 하려면 클릭

    를 찾았는데 이버튼을 클릭하면 정상적으로 로그아웃이 되내요...

    cosmosfarm_members_login_form 숏코드의 원본이 어디에 위치 되어 있나요?
  • 추가적으로 정보를 드리자면,

    몇번의 테스트 결과, 로그인, 회원가입, 프로필 페이지를 연동하여 로그인/로그아웃시에는 문제가 발생하고
    페이지 연동을 모두 빼고 로그인, 로그 아웃을하면 정상적으로 작동합니다.
    wp-members에서 코스모스팜 연동 없이는 잘되는거 같아요...
    어떻게 해결해야할까요 ㅠ,..
  • 답변 감사합니다.

    플러그인은 Kboard / Kboard 댓글 / wp-memebers / 코스모스팜 회원관리

    네가지를 설치해서 사용하고 있습니다. 따로 비활성화 시킬 플러그인이 없내요..
    twenty-twenty 테마로 새로 만들어서 해봤는데.
    address: mpool.co.kr
    login (Id:test) -> logout -> login : 결과는 빈페이지 출력됩니다.
    오히려 login (Id:test) -> logout -> members : 회원 정보로 가면 로그인창이 정상 출력되내요


    소스코드를 고쳐야하는 상황일까요?
  • 안녕하세요~^^

    저 역시 캐시를 비워야만 로그인 화면이 다시 뜨는 것을 확인했습니다.

    그런데 코스모스팜 회원관리 플러그인의 문제라고 판단되지는 않습니다.

    말씀하신 것처럼 캐시나 쿠키 관련해서 뭔가 다른 기능이 적용되어 있어 보입니다.

    회원관리 플러그인에는 캐시 기능이 없기 때문입니다.

    다른 플러그인을 하나씩 비활성화해서 테스트해보시고,

    다른 테마에서는 어떻게 동작하는지도 확인을 해서 원인을 찾아보셔야 할 듯합니다.

    원인을 찾게 되면 해결책도 수월하게 찾을 수 있을 듯합니다.

    고맙습니다.

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요