일반회원 정기결제회원으로 유도하기

안녕하세요 선생님

정기결제로 수익을 내고 싶은 상황입니다.

현재, 비회원자가 회원가입을 하면 '구독자'가 되고, 정기결제까지 하면 'CUSTOMER'가 되도록 사용자 역할을 설정했습니다.

 

1. 회원가입만 하고, 정기결제는 신청하지 않은 회원이 있다고 가정하겠습니다.

이 사람이 '정기결제를 해야 볼 수 있는 특정 게시판을 클릭'하면, "페이지를 볼 권한이 없습니다. "라는 문구만 뜨는데요.

2. 저는 이 페이지 보다는  정기결제페이지로 바로 넘어가게 하고 싶습니다. 이는 일반 회원도 정기결제회원으로 유도하고 싶기 때문이니다.

어떻게 하면 되나요?

 

감사합니다.

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    cosmosfarm_members_page_restriction 필터를 활용하시면 가능할 듯합니다.

    아래의 코드를 활용해보시겠어요?

    add_filter('cosmosfarm_members_page_restriction', 'cosmosfarm_members_page_restriction_2020_03_13', 1, 1);
    function cosmosfarm_members_page_restriction_2020_03_13($page_restriction){
    	global $post;
    	
    	if($page_restriction && get_the_ID() == '1'){ // 실제 페이지 id로 적용해주세요.
    		$current_user = wp_get_current_user();
    		$restriction_roles = get_post_meta($post->ID, 'cosmosfarm_members_page_restriction_roles', true);
    		
    		$this_restriction = true;
    		foreach($current_user->roles as $role){
    			if(in_array($role, $restriction_roles)){
    				$this_restriction = false;
    				break;
    			}
    		}
    		if($this_restriction){
    			?>
    			<script>
    			if(confirm('정기결제하신 후에 볼 수 있습니다.')){
    				window.location.href="페이지주소";
    			}
    			</script>
    			<?php
    			exit;
    		}
    	}
    	
    	return $page_restriction;
    }

    위의 코드에서 get_the_ID() == '1' 부분은 실제 페이지 제한 설정한 페이지 id로 적용해주세요.

    페이지주소 부분은 이동할 페이지 주소(정기결제 페이지)로 적용해보세요.

     

    테마의 functions.php 파일에 코드를 추가하거나 Code Snippets 플러그인을 사용해서 코드를 추가할 수 있습니다.

     

    워드프레스 사이트에서 페이지 ID를 확인하는 방법은

    아래의 링크를 참고해보세요.

    워드프레스에서 페이지(포스트) ID를 찾는 방법

    고맙습니다.

  • 안녕하세요 선생님.

    실제로 id와 주소 변경 후 소스 업데이트했지만, 홈페이지는 업데이트 이전하고 똑같이 작동합니다.

    https://imgur.com/a/PJaJiqq

     

    혹시 다시 한번 봐주실 수 있으실까요...ㅠㅠ

    사실 한 개의 게시판이 아니라 모든 게시판에 적용하고 싶은데, '공지사항' 게시판(id=13)으로 실험 중입니다.

    홈페이지는 nugunadu.com 입니다.

    감사합니다. 

     

    아래는 functions.php에 위 소스 추가한 원본입니다.

    그동안 기능 추가된 소스부분도 혹시 몰라 상단부분에 첨부하였습니다.

     

    /* Omit closing PHP tag to avoid "Headers already sent" issues. */

    add_filter('kboard_list_from', 'my_kboard_list_from', 10, 3);
    function my_kboard_list_from($from, $board_id, $content_list){
        global $wpdb;
        if(in_array($board_id, array('1', '2','3','5','6','7','8','10','11','12','13'))){ // 실제 게시판 id로 적용해주세요.
            $from .= " LEFT JOIN `{$wpdb->prefix}kboard_board_option` ON `{$wpdb->prefix}kboard_board_content`.`uid`=`{$wpdb->prefix}kboard_board_option`.`content_uid`";
        }
        return $from;
    }

    add_filter('kboard_list_where', 'my_kboard_list_where', 10, 3);
    function my_kboard_list_where($where, $board_id, $content_list){
        $category = kboard_category1();
        if($category && in_array($board_id, array('1', '2','3','5','6','7','8','10','11','12','13'))){ // 실제 게시판 id로 적용해주세요.
            $option_key = 'region';
            $where = "`board_id`='{$board_id}' AND `parent_uid`='0' AND `notice`='' AND (`status`='' OR `status` IS NULL OR `status`='pending_approval') AND (`option_key`='{$option_key}' AND `option_value`='{$category}')";
        }
        return $where;
    }

    /* kboard 글만 검색*/
    add_action('pre_get_posts', 'my_pre_get_posts');
    function my_pre_get_posts($query){
        if(is_search() && $query->is_main_query()){
            $query->set('post_type', 'kboard');
        }
    }
    /*상단바제거*/
    add_filter('show_admin_bar', 'my_show_admin_bar');
    function my_show_admin_bar() {
        if(current_user_can('activate_plugins')){
            return true;
        }
        return false;
    }

    /*회원가입후결제창으로이동*/
    add_action('wpmem_post_register_data', 'my_registration_hook', 1);
    function my_registration_hook($fields){
        $user = get_userdata($fields['ID']);
        wp_set_current_user($user->ID, $user->user_login);
        wp_set_auth_cookie($user->ID, false);
        do_action('wp_login', $user->user_login, $user);
        
        wp_redirect(site_url('http://nugunadu.com/상품결제창/'));
        exit;
    }

    /*일반회원이 id가 13인 공지사항게시판클릭시결제페이지유도*/
    add_filter('cosmosfarm_members_page_restriction', 'cosmosfarm_members_page_restriction_2020_03_13', 1, 1);
    function cosmosfarm_members_page_restriction_2020_03_13($page_restriction){
        global $post;
        
        if($page_restriction && get_the_ID() == '13'){ // 실제 페이지 id로 적용해주세요.
            $current_user = wp_get_current_user();
            $restriction_roles = get_post_meta($post->ID, 'cosmosfarm_members_page_restriction_roles', true);
            
            $this_restriction = true;
            foreach($current_user->roles as $role){
                if(in_array($role, $restriction_roles)){
                    $this_restriction = false;
                    break;
                }
            }
            if($this_restriction){
                ?>
                <script>
                if(confirm('정기결제하신 후에 볼 수 있습니다.')){
                    window.location.href="http://nugunadu.com/상품결제창/";
                }
                </script>
                <?php
                exit;
            }
        }
        
        return $page_restriction;
    }

  • 안녕하세요.

    코드를 올려주실 땐 반드시 에디터의 코드 스니펫 삽입 기능으로 올려주시길 부탁드립니다.

    그렇지 않으면 의도하지 않은 코드로 바뀌거나 질의응답 시 소통에 문제가 있을 수도 있습니다.

     

    추가하신 코드 중 get_the_ID() == '13' 부분의 숫자는

    게시판 id가 아닌 페이지 id로 적용해주셔야 합니다.

    게시판 id와 페이지 id는 서로 다릅니다.

    이전 댓글에 안내해드린 링크를 참고하셔서

    실제 해당 페이지의 id로 적용해서 확인해보시겠어요?

    고맙습니다.

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요