안녕하세요 선생님
정기결제로 수익을 내고 싶은 상황입니다.
현재, 비회원자가 회원가입을 하면 '구독자'가 되고, 정기결제까지 하면 '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=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로 적용해서 확인해보시겠어요?
고맙습니다.