회원관리 우커머스 문자 연동 질문

    add_action('woocommerce_order_status_completed', 'my_order_status_completed_sms', 10, 1);
    function my_order_status_completed_sms($order_id){
        $order = wc_get_order($order_id);
        $user_id = $order->get_customer_id();

        if($user_id){
            $phone_number = get_user_meta($user_id, 'billing_phone', true);
            
            if($phone_number){
                cosmosfarm_members_sms_send($phone_number, '주문 번호 #'.$order_id.'의 결제가 완료되었습니다. 비회원 다운로드시 주문 번호와 이메일로 다운로드하실 수 있습니다.');
            }
        }
    }

 

다음과 같은 코드를 이용하여 상품 구매시 고객에게 문자를 발송해주고 있습니다.

그런데 정작 비회원 고객에게 보내는게 중요한데 막상 비회원 고객에게는 문자를 발송하지 못합니다.

회원고객에게는 발송에 문제가 전혀 없구요. 뭐가 문제일까요?

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
  •     add_action('woocommerce_order_status_completed', 'my_order_status_completed_sms', 10, 1);
        function my_order_status_completed_sms( $order_id ) {
            // Get the order object
            $order = wc_get_order( $order_id );
            // Get the billing phone number from the order
            $phone_number = $order->get_billing_phone();
            if ( $phone_number ) {
                cosmosfarm_members_sms_send( $phone_number, '주문 번호 #'.$order_id.'의 결제가 완료되었습니다.' );
            }
        }

    해외 포럼의 힘을 빌어 다음과 같은 코드로 수정하였습니다.

     

  • 비회원 주문을 관리자 페이지에서 완료로 변경할 경우

    이전 댓글에 안내해드린 코드가

    저희 쪽 테스트 서버에서는 정상적으로 동작하는 것을 확인했습니다.

    필드 메타키가 일치한다면 다른 쪽에 문제가 있는지 확인해보셔야 할 듯합니다.

    다른 방법이 있을지 연구해보겠습니다.

    고맙습니다.

  • 답변 감사합니다. 해당 코드를 적용하였으나 여전히 발송은 되지 않습니다.

    woocommerce checkout filed 를 이용해서 메타 'billing_phone' 을 이용해 사용중이고 회원 비회원 구분 없이 사용중입니다.

    회원인 경우 해당 필드값을 수정해서 주문을 하는 경우 작동이 잘 됩니다.

    알아서 wp-members의 필드값도 바뀌구, 우커머스의 필드값도 바뀌구요.

    비회원일때 따로 필드를 만들어야될까요?
     

  • 안녕하세요~^^

    get_user_meta 함수는 로그인 사용자에 한해서 동작합니다.

    그렇기 때문에 비회원의 경우에는 SMS 발송 코드가 동작하지 않습니다.

    비회원 상품 주문 시 별도로 휴대폰 번호를 입력하도록 설정되어 있는지요?

    기존 코드 대신 아래의 코드로 교체해서 확인해보시겠어요?

    add_action('woocommerce_order_status_completed', 'my_order_status_completed_sms', 10, 1);
    function my_order_status_completed_sms($order_id){
    	$order = wc_get_order($order_id);
    	$user_id = $order->get_customer_id();
    	
    	if($user_id){
    		$phone_number = get_user_meta($user_id, 'billing_phone', true);
    	}
    	else{
    		$phone_number = get_post_meta($order_id, 'billing_phone', true);
    	}
    	
    	if($phone_number){
    		cosmosfarm_members_sms_send($phone_number, '주문 번호 #'.$order_id.'의 결제가 완료되었습니다. 비회원 다운로드시 주문 번호와 이메일로 다운로드하실 수 있습니다.');
    	}
    }

    위의 코드에서 get_post_meta($order_id, 'billing_phone', true); 쪽 billing_phone 부분은

    실제 상품 주문 시 입력하는 휴대폰 번호 필드의 메타키로 적용해보세요.

    고맙습니다.

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