케이보드 댓글 알림 관련 문의 드립니다.

안녕하세요, 케이보드 댓글 알림 관련 문의 드립니다.

현재 코스모스팜 회원관리 플러그인을 사용하여 케이보드에 쓴 글에 댓글이 달렸을 시 이메일 알림이 가도록 설정했습니다.

그리고 현재 잘 되는 것으로 확인 됩니다. 다만 3 가지 궁금증이 있어 이렇게 글을 쓰게 되었습니다.

 

1. 검색을 하다보니 케이보드 댓글 알림을 이메일로 보내기 위해서는 다음과 같은 코드를 삽입하라는 글을 보았습니다. 코드는 아래와 같습니다.

add_action('kboard_comments_insert', 'my_parent_comment_email_alert_20191212', 10, 3);
function my_parent_comment_email_alert_20191212($comment_uid, $content_uid, $board){
	$comment = new KBComment();
	$comment->initWithUID($comment_uid);
	$content = new KBContent();
	$content->initWithUID($content_uid);
	
	if($comment->parent_uid){
		$parent = new KBComment();
		$parent->initWithUID($comment->parent_uid);
		
		if($parent->user_uid){
			$user = new WP_User($parent->user_uid);
			
			if($user->user_email && $user->ID != get_current_user_id()){
				if(!class_exists('KBMail')){
					include_once KBOARD_DIR_PATH . '/class/KBMail.class.php';
				}
				$url = new KBUrl();
				$mail = new KBMail();
				$mail->to = $user->user_email;
				$mail->title = "새로운 댓글이 등록 되었습니다.";
				$mail->content = $parent->content;
				$mail->url = $url->getDocumentRedirect($content->uid);
				$mail->url_name = '페이지로 이동하여 보기';
				$mail->send();
			}
		}
	}
}

 

저도 그래서 이 코드를 functions.php 파일에 삽입하였으나, 이 코드를 삭제하고 테스트를 해봐도 댓글 알림이 제대로 이메일로 발송되는 것을 알 수 있었습니다. 이 코드를 꼭 붙여야 할까요?

 

2. 이메일 알림을 받기 위해서는 이메일 알림 페이지에서 <이메일 알림받기>를 체크해야만 합니다. 그런데 문제는 제 생각에 기본 값으로는 <이메일 알림받기> 값이 해제되어 있는 것 같습니다. 그래서 검색을 해본 결과 기본 값으로 <이메일 알림 받기>가 체크되어 있게 하기 위해서는 아래와 같은 코드가 삽입되어야한다는 것을 발견했습니다. 코드는 아래와 같습니다.

add_action('user_register', 'my_user_register', 10, 1);
function my_user_register($user_id){
	update_user_meta($user_id, 'cosmosfarm_members_notifications_subnotify_email', '1');
}

이 코드를 삽입한 후, 새로 가입한 사람들의 경우 <이메일 알림 받기>가 자동으로  체크됨을 확인할 수 있었습니다. 문제는 기존에 가입한 분들입니다. 기존에 가입한 분들은 이 코드를 넣었음에도 불구하고 여전히 <이메일 알림 받기>가 자동으로 체크되지 않고 있습니다. 기존 가입자의 설정까지 제가 바꿀 수 있을까요? 제 생각에 그건 어려울 것 같지만 혹시 몰라 여쭤 봅니다.

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

    1번의 코드가 없어도 동작한다면 코드를 사용하실 필요는 없습니다.

     

    2번의 경우 아래 코드를 사용하시면 가입된 모든 회원 정보를 업데이트할 수 있습니다.

    아래 코드를 테마의 functions.php 파일에 추가해주세요.

    add_action('init', 'my_all_users_update_20191219');
    function my_all_users_update_20191219(){
    	$args = wp_parse_args(array());
    	$args['count_total'] = false;
    	
    	$user_search = new WP_User_Query($args);
    	$users = (array) $user_search->get_results();
    	
    	foreach($users as $user){
    		update_user_meta($user->ID, 'cosmosfarm_members_notifications_subnotify_email', '1');
    	}
    }

    그런데 초기에 회원수가 별로 없을 때 한 번만 해주세요.

    코드를 넣고 페이지를 새로고침 하시면 전체 회원에 적용됩니다.

    적용 후 코드를 다시 삭제해주세요.

     

    3번의 경우 이전에 안내드린 코드를 그대로 재활용하실 수 있겠습니다.

    아래 코드를 테마의 functions.php 파일에 추가해서 확인해보시겠어요?

    add_filter('the_content', 'my_page_restriction_20191219', 99, 1);
    function my_page_restriction_20191219($content){
    	global $post;
    	
    	if($post && $post->ID == '14586'){ // 실제 페이지 ID 값으로 변경
    		if(!is_user_logged_in()){
    			$page_restriction_message = '<p>이 페이지를 보기 위해서는 로그인이 필요합니다.</p>';
    			
    			$_REQUEST['redirect_to'] = $_SERVER['REQUEST_URI'];
    			$content = wpmem_inc_regmessage('page_restriction', $page_restriction_message) . wpmem_inc_login('page_restriction');
    		}
    	}
    	
    	return $content;
    }

    고맙습니다.

  • 감사합니다. 모두 해결하였습니다. 연말 잘 보내시길 바랄게요!

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기