1. 정확한 제품 또는 플러그인 이름
코스모스팜 회원관리
마이크레드
2. 상세 내용
안녕하세요. 마이크레드 후크 메뉴에 들어가면 KBoard 게시글 및 댓글 작성 등 다양한 훅들을 설정할 수 있는데요.
그 중에서 '추천을 위한 포인트'가 있는데, 이것을 설정해도 레퍼럴 링크를 통한 가입 시 포인트 지급이 되지 않습니다.
일단 아래처럼 설정해놓은 상태인데요. 확인 부탁드립니다.
만약 wp-members 필드에 특정 필드를 추가해야 된다면 안내 부탁드립니다.
아래에 myCred 관련 코드를 첨부합니다.(plugins/mycred/includes/hooks)
public function site_signup( $new_user_id ) {
// Requirement
$ref = false;
$key = '';
if ( isset( $_COOKIE[ 'signup_ref' . $this->mycred_type ] ) ) {
$ref = sanitize_text_field( wp_unslash( $_COOKIE[ 'signup_ref' . $this->mycred_type ] ) );
$key = 'signup_ref' . $this->mycred_type;
}
elseif ( isset( $_COOKIE[ 'mycred_ref' . $this->mycred_type ] ) ) {
$ref = sanitize_text_field( wp_unslash( $_COOKIE[ 'mycred_ref' . $this->mycred_type ] ) );
$key = 'mycred_ref' . $this->mycred_type;
}
if ( $ref === false ) return;
// Attempt to get the user id based on the referrer
$user_id = $this->get_user_id_from_ref_id( $ref );
if ( $user_id === NULL ) {
if ( ! headers_sent() )
setcookie( $key, $ref, time()-3600, COOKIEPATH, COOKIE_DOMAIN );
return;
}
// Delete Cookie
if ( ! headers_sent() )
setcookie( $key, $ref, time()-3600, COOKIEPATH, COOKIE_DOMAIN );
// Attempt to get the users IP
$remote_addr = isset( $_SERVER['REMOTE_ADDR'] ) ? sanitize_text_field( wp_unslash( $_SERVER['REMOTE_ADDR'] ) ) : '';
$IP = sanitize_key( apply_filters( 'mycred_affiliate_IP', $remote_addr, 'signup', $this ) );
if ( $this->core->has_entry( 'signup_referral', $new_user_id, $user_id, $IP, $this->mycred_type ) ) return;
if ( $IP != '' && $IP != '0.0.0.0' ) {
if ( $this->core->has_entry( 'signup_referral', $new_user_id, $user_id, $IP, $this->mycred_type ) ) return;
if ( $this->ref_counts( $user_id, $IP, 'signup' ) ) {
// Award when users account gets activated
if ( function_exists( 'buddypress' ) || class_exists( 'pw_new_user_approve' ) ) {
mycred_add_user_meta( $new_user_id, 'referred_by_', $this->mycred_type, $user_id, true );
mycred_add_user_meta( $new_user_id, 'referred_by_IP_', $this->mycred_type, $IP, true );
mycred_add_user_meta( $new_user_id, 'referred_by_type_', $this->mycred_type, $this->mycred_type, true );
}
// Award now
else {
$execute = apply_filters( 'mycred_signup_referral_execute_woo', true, $user_id, $IP, $new_user_id , $this );
if ( $this->core->has_entry( 'signup_referral', $new_user_id, $user_id, $IP, $this->mycred_type ) ) return;
if ( $execute === true ) {
$this->core->add_creds(
'signup_referral',
$user_id,
$this->prefs['signup']['creds'],
$this->prefs['signup']['log'],
$new_user_id,
$IP,
$this->mycred_type
);
}
do_action( 'mycred_signup_referral', $user_id, $IP, $new_user_id, $this );
}
}
}
}
쿠키의 캐시 기능 때문이었습니다. 잘 해결했습니다. 감사합니다.^^
어필리에이트 시스템을 원하시는 거라면
남겨주신 내용이 맞는듯 합니다.
안되는 이유는 여러가지가 있을 수 있기 때문에
딱 잘라서 말씀드리기가 어렵습니다.
코드로 봤을 때는 어필리에이트 링크 접속 후
F12를 눌러 개발자도구에서 애플리케이션->쿠키에 접속하신 후
signup_ref 또는 mycred_ref 이라는 키의 쿠키가 저장되어 있는지
확인해보시고 있다면 mycred_add 함수가 왜 동작하지 않는지 먼저 파악해주셔야 할 듯 합니다.
맨 아래에 mycred_signup_referral 액션이 있으니
add_action('mycred_signup_referral', function($user_id, $IP, $new_user_id, $data){
echo $user_id;
exit;
}, 10, 4);
와 같이 사용자 ID를 확인하여
해당 코드가 정상적으로 동작하고 있는지도 확인 해보시겠어요?
고맙습니다.
혹시 추천인 링크를 타고 들어오면 해당 추천인에게 포인트가 지급되는
어필리에이트 시스템을 원하시는 걸까요?
네, 맞습니다. 추천인 링크를 타고 들어와서 회원가입 시, 추천링크를 준 회원에게 포인트를 지급하고 싶습니다.
안녕하세요~^^
남겨주신 내용으로는 어떤 목적인지 정확히 파악이 어렵습니다.
혹시 추천인 링크를 타고 들어오면 해당 추천인에게 포인트가 지급되는
어필리에이트 시스템을 원하시는 걸까요?
남겨주신 이미지는 어떤 플러그인의 어떤 메뉴인지 확인이 어렵습니다.
어떤 플러그인인지도 함께 남겨주시겠어요?
플러그인이 동작되지 않는다면 디버그 모드를 활성화해서
어떤 오류 메시지가 표시되는지 확인해보셔야 할 듯합니다.
디버그 모드 활성화 방법은 아래의 링크를 참고해보세요.
고맙습니다.