워드프레스 댓글을 회원만 볼 수 있도록 설정하는 방법

Last Updated: 2021년 05월 09일 | | 2개 댓글

워드프레스 사이트에서 로그인 사용자만 댓글을 달 수 있도록 설정할 수 있습니다. 댓글 목록을 회원만 볼 수 있고 비회원 즉 비로그인 사용자에게는 숨기고 싶은 경우가 있습니다. 그런 경우 테마 파일을 직접 수정하거나 CSS를 사용하여 비로그인 사용자가 댓글 리스트를 볼 수 없도록 설정할 수 있습니다.

워드프레스 댓글을 회원만 볼 수 있도록 설정하는 방법 (비로그인 사용자에게 댓글 숨기기)

워드프레스에서 로그인 사용자 즉 회원만 댓글을 달 수 있도록 하려면 워드프레스 관리자 페이지 > 설정 > 토론으로 이동하여 기타 댓글 설정 섹션의 "사용자가 댓글을 달려면 회원가입하고 로그인해야 합니다" 옵션을 체크하면 됩니다.

워드프레스 댓글 - 회원만 댓글 작성할 수 있도록 설정하기

회원만 댓글 리스트를 볼 수 있도록 하는 옵션은 없습니다. 회원만 댓글 목록을 볼 수 있도록 하고 비회원(비로그인 사용자)이 볼 수 없도록 하고 싶은 경우 아래의 두 가지 방법을 통해 가능합니다.

comments.php 파일 수정하기

테마 폴더 내의 comments.php 파일을 편집하여 댓글 내용을 회원에게만 표시하도록 할 수 있습니다.

이 작업을 하려면 먼저 차일드 테마를 만들도록 합니다. 차일드 테마(자식 테마)를 만들어 작업하지 않으면 추후에 테마를 업데이트하면 추가 사항이나 수정 사항이 초기화됩니다.

원래 테마(부모 테마) 내의 comments.php 파일을 PC로 다운로드한 후에 다운로드한 파일을 차일드 테마 폴더로 업로드합니다.

그런 다음 comments.php 파일을 열고 회원에게만 표시하고자 하는 부분 바로 위에 다음 라인을 추가합니다.

<?php if (is_user_logged_in()): ?>

그리고 회원에게만 표시하고자 하는 부분 바라 아래에 다음 라인을 추가합니다.

<?php endif; ?>

예시: 엔폴드 테마

예를 들어, 엔폴드(Enfold) 테마의 경우 comments.php 파일에서 다음 부분을 찾습니다.

			<ol class="commentlist" id="comments">
				<?php
					/* Loop through and list the comments. Tell wp_list_comments()
					 * to use avia_inc_custom_comments() to format the comments.
					 * If you want to overload this in a child theme then you can
					 * define avia_framework_comment() and that will be used instead.
					 * See avia_framework_comment() in includes/loop-comments.php for more.
					 */
					wp_list_comments( array( 'type'=> 'comment', 'callback' => 'avia_inc_custom_comments' ) );
				?>
			</ol>

위의 코드 부분 바로 위와 아래에 <?php if (is_user_logged_in()); ?><?php endif; ?>를 추가합니다.

워드프레스 댓글을 회원만 볼 수 있도록 설정하는 방법

실제 코멘트 리스트 부분은 테마마다 조금씩 차이가 있지만 보통 commentlist 또는 comment-list로 검색하여 쉽게 찾을 수 있을 것입니다.

대부분의 테마에서 위와 같은 방법으로 댓글 내의 특정 부분을 회원만 볼 수 있도록 할 수 있습니다. 하지만 경우에 따라 잘 안 되는 경우도 있습니다. 예를 들어, 아바다 (Avada) 테마의 특정 데모에서는 위의 방법으로 가능하지 않을 수 있습니다. 아바다 테마에서는 새로 도입한 Layout 템플릿을 사용하여 댓글 부분을 제어할 수 있습니다("아바다 테마 레이아웃(Layout)을 사용하여 사이트의 모든 섹션 커스텀하기" 참고).

커스텀 CSS 사용하기

쉬운 방법으로 CSS 코드를 사용하여 비회원이 댓글 목록을 볼 수 없도록 숨길 수 있습니다. 보통 다음과 같은 CSS 코드가 잘 작동할 것입니다.

/* 워드프레스 댓글 리스트를 로그인 사용자에게만 표시하기 */
/* How to hide comments to non logged users in WordPress */

.commentlist {
  display:none;
}

.logged-in .commentlist {
  display:inline;
}

이 블로그에 사용된 GeneratePress 테마의 경우 다음과 같은 코드를 사용할 수 있습니다.

/* GeneratePress 테마에서 워드프레스 댓글 목록을 회원에게만 표시하기 */
/* How to hide comments to non logged users in WordPress GeneratePress theme */

.comment-list {
  display:none;
}

.logged-in .comment-list {
  display:inline;
} 

댓글 목록을 비회원이 볼 수 없도록 숨기면 특정 글에 댓글이 달린 경우 댓글 개수는 표시되지만 댓글 내용은 표시되지 않습니다. 다음과 같은 코드를 테마 함수 파일에 추가하여 로그인해야 댓글을 볼 수 있다는 내용의 메시지를 출력할 수 있습니다.

add_action( 'comment_form_before', 'my_pre_comment_text' );

function my_pre_comment_text() {
echo '<div class="mytext"><p>※댓글을 보려면 로그인하세요.</p></div>';
} 

조금 더 정교하게 하려면 비로그인 사용자에게만 위의 메시지가 표시되도록 다음 조건문을 추가할 수 있습니다.

if ( !is_user_logged_in()) { ... }

참고


2 개 댓글

Leave a Comment

  1. 문의드립니다
    티토리로 블로그를 시작했는데 아무 지식이 없이 시작했는데 혹시 워드프레스로 블로그 코칭하시는지요?

    응답