댓글 입력폼의 불필요한 요소 제거

qpress 2020년 2월 18일 31

별도의 댓글 플러그인을 설치하지 않거나 댓글 UI를 잘 지원하는 테마를 사용하지 않을 경우 워드프레서 자체의 댓글 UI가 보여 집니다.
한국 사용자들에게는 다소 어색한 UI일 것입니다.
그래도 뭐 대세에 지장 없다고 보고 사용하려고 해도 필요 없는 요소들이 몇몇 보입니다.

설정에서 제거 하는 것도 있고, 코드를 약간 수정해서 제거 하는 것도 있습니다.

1. 설정 변경

먼저 설정에서 제거 할 수 있는 것은 ‘나중을 위해 이름….’의 체크박스 부분입니다.
관리자 메뉴의 ‘설정>토론’으로 들어가서 해당 부분의 체크를 해제 하면 되는데 아래 이미지 참고 하기 바랍니다.

2. 코드 수정

나머지 ‘이메일은 공개되지 않습니다…..’ 와 홈페이지 입력창 제거를 위해서는 약간의 코드 작업이 필요 합니다. 코드 작업이 어려울 경우에는 다양한 기능과 옵션이 제공되는 댓글 플러그인을 설치하는 것이 낫습니다.

테마의 function.php(차일드 테마를 사용해야 테마 업데이트시 문제가 없습니다.)에 아래와 같이 코드를 작성 합니다.

apply_filters( 'comment_form_defaults', 'remove_comment_field');
function remove_comment_field($fields){
	// if(isset($fields['email'])) unset($fields['email']);
	unset($fields['url']);
	return $fields;
}

만약 이렇게 코드를 삽입 했는데도 해당 부분이 없어지지 않는다면, 사용하는 테마에서 다른 방식으로 filter를 적용했기 때문입니다. 이 경우는 테마에서 제공하는 filter가 있는지 알아 보아야 하고, 그것도 없으면 테마의 comments.php의 해당 filter 부분을 수정해 주어야 합니다.

대부분의 테마들은 코멘트 부분에 대한 많은 변경 사항을 적용해 놓고 있습니다. 댓글 UI는 사이트의 중요한 요소이기 때문에 테마가 추구하는 방향에 맞도록 커스트마이징 해 놓는 것인데 이렇다 보니 위와 같이 add_filter의 우선순위 등의 문제로 수정하기가 어려운 경우가 많습니다.

그래서, 불가피하게 사용하는 테마의 댓글 부분을 직접 수정할 수 밖에 없는데, 테마가 업데이트 될 경우 수정한 부분을 일일이 다시 만져 줘야 하는 번그로움이 있습니다. 그래서, 차일드 테마를 만들어서 차일드 테마의 해당 부분을 수정하는 것이 바람직 합니다.

Q.PRESS 테마 comments.php 파일의 필드 관련된 아래 코드 참고 하시기 바랍니다.

$fields =  array(
  'author' =>
 '<input type="text" id="author" name="author" placeholder="Name" class="qpw-comment-author qp-input as-rect" value="' . esc_attr( $commenter['comment_author'] ) .'"' . $aria_req . ' />',
  'email' =>
 '<input type="text" id="email" name="email" placeholder="Email" class="qpw-comment-email qp-input as-rect" value="' . esc_attr( $commenter['comment_author_email'] ) .'"' . $aria_req . ' />'
);
$comments_args = array(
  'class_form' => 'qp-form',
  'title_reply' => '',
  'logged_in_as' => '',
  'comment_field' => '<textarea id="comment" class="qp-input as-w100 as-rect" name="comment" aria-required="true" style="margin-bottom:5px"></textarea>',
  'submit_button' => '<input name="%1$s" type="submit" id="%2$s" class="%3$s qp-btn" value="%4$s" />',
  'cancel_reply_link' => '<i class="far fa-window-close"></i>',
  'comment_notes_before' => '',
  'fields' => apply_filters( 'comment_form_default_fields', $fields ),
);
comment_form($comments_args);

$fields 배열에 url(홈페이지) 필드를 포함하지 않았기 때문에 홈페이지 URL 입력하는 부분이 출력되지 않고, $comment_args의 ‘comment_notes_before’ =>” 부분 때문에 상단의 ‘이메일은 공개되지 않습니다…’ 메시지가 출력되지 않는 것입니다.