회원정보 필드 추가 설정(주문시 받은 정보 자동연계 여부)

안녕하세요! 

현재 코스모스팜 회원관리로 정기결제를 준비중에 있습니다. 

다름이 아니라, 회원가입 입력 필드값이 회원정보에서도 그대로 유지되어 이를 수정하고 싶어서 문의 드립니다. 
가입입력란에서 지우면 정보에서도 없어져서, 
현재 선택형으로 전부 가입시 입력란을 만들었지만, 보기에 좋지 않아 가입시에는 입력란을 최소화 합고 싶습니다. 

즉, 
1. 회원가입시 보여졌으면 하는 필드값: 
이메일, 생년월일

2. 회원정보 페이지에서 보여졌으면 하는 필드값
이메일, 생년월일, 주소, 전화번호 

다만, 주문시(정기결제시), 주소와 전화번호를 입력하는 난이 필수로 지정되어 있습니다. 
따라서 본 정보가, 자동으로 회원정보 필드값으로 입력 될 수 있을까요? 

방법 알려주시면 감사하겠습니다. 

감사합니다. 

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    wpmem_register_fields_arr 필터를 활용하시면

    회원가입 페이지와 회원정보 페이지에서 필드를 다르게 표시하실 수 있습니다.

     

    워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에

    아래의 코드를 추가해보시겠어요?

    add_filter('wpmem_register_fields_arr', 'my_register_form_fields', 10, 2);
    function my_register_form_fields($arr, $tag){
    	if($tag == 'new'){
    		if(isset($arr['메타키'])){
    			unset($arr['메타키']);
    		}
    	}
    	return $arr;
    }

    위의 코드에서 메타키 부분은 실제 WP-Members 플러그인의 필드 메타키로 적용해보세요.

     

    정기결제 완료 시 사용자 정보를 업데이트하는 건

    cosmosfarm_members_subscription_request_pay 액션을 활용해보시겠어요?

    테마 쪽 functions.php 파일에 아래의 코드를 활용해보세요.

    add_action('cosmosfarm_members_subscription_request_pay', 'my_cosmosfarm_members_subscription_request_pay', 10, 1);
    function my_cosmosfarm_members_subscription_request_pay($product){
    	// 정기 결제 시 실행됩니다.
    	$address = isset($_POST['메타키'])&&$_POST['메타키'] ? $_POST['메타키'] : '';
    	$user_id = get_current_user_id();
    	if($user_id && $address){
    		update_user_meta($user_id, '메타키', $address);
    	}
    }

    위의 코드에서 메타키 부분은 WP-Members 필드의 메타키로 적용해보시겠어요?

    고맙습니다.

  • 신속한 답변 감사드려요!! 

    다만, 제가 좀 초보여서, 하기와 같이 작성해서, functions.php 파일 하단에 넣는 것이 맞는지 확인 해주시면 감사하겠습니다. 
    (메타키를 어떤 방식으로 넣는지에 대해서 좀 확실치가 않아서요ㅠㅠ) 감사합니다. 

     

    1. 회원가입란에는, 메타키 4개 넣기: 이메일, 비밀번호, 비밀번호확인. 생년월일 

    add_filter('wpmem_register_fields_arr', 'my_register_form_fields', 10, 2);
    function my_register_form_fields($arr, $tag){
    	if($tag == 'new'){
    		if(isset($arr['user_email'])){
    			unset($arr['user_email']);
    		}
        if(isset($arr['password'])){
          unset($arr['password']);
        }
        if(isset($arr['confirm_password'])){
          unset($arr['confirm_password']);
        }
        if(isset($arr['user_birthday'])){
          unset($arr['user-_birthday']);
        }
    	}
    	return $arr;
    }



    2. 정기결제 후, 자동으로 회원정보에 입력되기 3개 메타키: 우편번호, 주소1, 주소2 

    add_action('cosmosfarm_members_subscription_request_pay', 'my_cosmosfarm_members_subscription_request_pay', 10, 1);
    function my_cosmosfarm_members_subscription_request_pay($product){
    	// 정기 결제 시 실행됩니다.
    	$address = isset($_POST[billing_postcode])&&$_POST[billing_postcode] ? $_POST[billing_postcode] : '';
    	$user_id = get_current_user_id();
    	if($user_id && $address){
    		update_user_meta($user_id, billing_postcode , $address);
    
      $address = isset($_POST[billing_address_1])&&$_POST[billing_address_1] ? $_POST[billing_address_1] : '';
      $user_id = get_current_user_id();
      if($user_id && $address){
        update_user_meta($user_id, billing_address_1 , $address);
    
      $address = isset($_POST[billing_address_2])&&$_POST[billing_address_2] ? $_POST[billing_address_2] : '';
      $user_id = get_current_user_id();
      if($user_id && $address){
        update_user_meta($user_id, billing_address_2 , $address);
    
    
      
    	}
      
    }

     

  • 안녕하세요.

    1. 회원가입 페이지에 표시되는 필드의 메타키가 아닌

    회원정보 페이지에서 표시될 필드의 메타키로 교체해서 확인해보시겠어요?

    아래의 코드처럼 회원가입 페이지에서는 표시하지 않을 필드의 메타키로 적용해보세요.

    add_filter('wpmem_register_fields_arr', 'my_register_form_fields', 10, 2);
    function my_register_form_fields($arr, $tag){
    	if($tag == 'new'){
    		if(isset($arr['address'])){
    			unset($arr['address']);
    		}
    		if(isset($arr['phone1'])){
    			unset($arr['phone1']);
    		}
    	}
    	return $arr;
    }

    위의 코드 중에서 address 부분과 phone1 부분은 실제 각 필드의 메타키로 적용해보세요.

     

    2. 아래의 코드로 적용해서 확인해보시겠어요?

    add_action('cosmosfarm_members_subscription_request_pay', 'my_cosmosfarm_members_subscription_request_pay', 10, 1);
    function my_cosmosfarm_members_subscription_request_pay($product){
        // 정기 결제 시 실행됩니다.
        $billing_postcode = isset($_POST['billing_postcode'])&&$_POST['billing_postcode'] ? $_POST['billing_postcode'] : '';
        $billing_address_1 = isset($_POST['billing_address_1'])&&$_POST['billing_address_1'] ? $_POST['billing_address_1'] : '';
        $billing_address_2 = isset($_POST['billing_address_2'])&&$_POST['billing_address_2'] ? $_POST['billing_address_2'] : '';
        $user_id = get_current_user_id();
        
        if($user_id){
            update_user_meta($user_id, 'billing_postcode', $address);
            update_user_meta($user_id, 'billing_address_1', $address);
            update_user_meta($user_id, 'billing_address_2', $address);
        }
    }

    고맙습니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기