우커머스 포인트 앤 리워드 플러그인을 쓰고 있습니다,
https://codecanyon.net/item/woocommerce-points-and-rewards-wordpress-plugin/21945963
예를들면 이런식으로 작성할 수 있을까요?
// 정기결제 완료 후에 코드가 실행됩니다.
add_action('cosmosfarm_members_subscription_request_pay', 'my_cosmosfarm_members_subscription_request_pay', 5, 3);
function my_cosmosfarm_members_subscription_request_pay($order, $product, $custom_data){
// 로그인을 한 사람만 포인트를 받을 수 있습니다.
if ( ! is_user_logged_in() )
return;
$points = // 정기결제 상품은 A,B,C 이렇게 세개입니다. 각각에 대해서 서로 다른 포인트를 부여하고 싶습니다.
// 예를 들면 A를 구매하면 1포인트, B 구매시 3포인트, C 구매시 6포인트
WC_Points_Rewards_Manager::increase_points( 변수 );
}
새로운 질문이 아닌 이어지는 질문이라면
이전 글의 댓글로 남겨주시길 부탁드립니다.
아래의 코드를 활용해보시겠어요?
// 정기결제 완료 후에 코드가 실행됩니다.
add_action('cosmosfarm_members_subscription_request_pay', 'my_cosmosfarm_members_subscription_request_pay', 5, 3);
function my_cosmosfarm_members_subscription_request_pay($order, $product, $custom_data){
$product_id = $product->ID();
// 로그인을 한 사람만 포인트를 받을 수 있습니다.
$point = 0;
if(is_user_logged_in()){
if($product_id == '1'){
$point = 100;
}
else if($product_id == '2'){
$point = 200;
}
else if($product_id == '3'){
$point = 200;
}
}
// 이곳에 포인트를 추가하는 코드를 추가해보세요.
}
위의 코드에서 $product_id == '1', $product_id == '2', $product_id == '3' 부분은 실제 상품 id로 적용해보세요.
포인트는 각 상품별로 설정해보세요.
상품 ID 확인은
워드프레스 관리자 -> 정기결제 -> 상품 -> 상품 선택 후
숏코드 쪽에서 확인하실 수 있습니다.
고맙습니다.
우커머스 포인트 앤 리워드 문서를 보면 포인트를 자동으로 추가하는 새로운 액션을 만드는 법에 대해 나와있습니다.
https://docs.woocommerce.com/document/points-and-rewards-developer-documentation/
그런데 이것을 우커머스와 별개로 분리되어있는 코스모스팜의 정기결제 상품의 구매액션과 어떻게 결합해야할지 고민이 됩니다.
아니면 혹시 정기결제 상품 구매 이후 user role 이 변경될 때 자동으로 포인트가 추가되게 할 수 있을 것 같은데, 혹시 방법이 있을까요?
코스모스팜 회원관리 플러그인의 정기결제 기능을 다른 기능과 연결시킬 수 있습니다.
자세한 방법은 워드프레스 정기결제 유료회원제 다른 플랫폼 연동 방법을 보시면 좋을 듯합니다.
각각의 액션에 포인트를 적립하거나 차감하는 코드를 넣어주시면 되겠습니다.
고맙습니다.
WC_Points_Rewards_Manager::increase_points( $user_id, $points,$event_type );
이렇게 구현한다고 할때, $user_id 는 무엇을 가져와야 하나요?
어느 상황일 때 말씀이신가요?
상황에 따라서 방법이 달라집니다.
아래 코드를 참고 해보시겠어요?
// 사용자가 로그인되어있는 상황이라면
$user_id = get_current_user_id();
// 코스모스팜 회원관리 정기결제 주문 정보에서 사용자 정보를 가져올 수 있습니다.
$user = $order->user();
$user_id = $user->ID;