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.'의 결제가 완료되었습니다. 비회원 다운로드시 주문 번호와 이메일로 다운로드하실 수 있습니다.');
}
}
}
다음과 같은 코드를 이용하여 상품 구매시 고객에게 문자를 발송해주고 있습니다.
그런데 정작 비회원 고객에게 보내는게 중요한데 막상 비회원 고객에게는 문자를 발송하지 못합니다.
회원고객에게는 발송에 문제가 전혀 없구요. 뭐가 문제일까요?
안녕하세요~^^
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 부분은
실제 상품 주문 시 입력하는 휴대폰 번호 필드의 메타키로 적용해보세요.
고맙습니다.
답변 감사합니다. 해당 코드를 적용하였으나 여전히 발송은 되지 않습니다.
woocommerce checkout filed 를 이용해서 메타 'billing_phone' 을 이용해 사용중이고 회원 비회원 구분 없이 사용중입니다.
회원인 경우 해당 필드값을 수정해서 주문을 하는 경우 작동이 잘 됩니다.
알아서 wp-members의 필드값도 바뀌구, 우커머스의 필드값도 바뀌구요.
비회원일때 따로 필드를 만들어야될까요?
비회원 주문을 관리자 페이지에서 완료로 변경할 경우
이전 댓글에 안내해드린 코드가
저희 쪽 테스트 서버에서는 정상적으로 동작하는 것을 확인했습니다.
필드 메타키가 일치한다면 다른 쪽에 문제가 있는지 확인해보셔야 할 듯합니다.
다른 방법이 있을지 연구해보겠습니다.
고맙습니다.
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.'의 결제가 완료되었습니다.' );
}
}
해외 포럼의 힘을 빌어 다음과 같은 코드로 수정하였습니다.