워드프레스의 기본 '최근 댓글' 위젯 수정하기

워드프레스에서 제공하는 기본 "최근 댓글" 위젯은 작성자와 글 제목만 표시되는 매우 단순한 위젯입니다. 아바타나 댓글 요약문을 추가하려면 별도의 위젯을 설치해야 합니다. 최신글 위젯 플러그인으로는 Recent Posts Widget With Thumbnails 정도가 나름대로 괜찮은 것 같습니다.

하지만 별도의 위젯을 설치하지 않고 사용자가 원하는 대로 기본 "최근 댓글" 위젯의 레이아웃을 변경하려면 워드프레스의 코어 파일을 수정해야 합니다. 사실 워드프레스 Core 파일의 수정은 그다지 권장되지 않습니다. 가능하면 CSS 등을 통해 조정하거나 함수를 통해 수정하는 것이 바람직합니다. 이 경우 워드프레스 핵심 파일을 수정해야 하는데요, 나중에 워드프레스를 업데이트를 하면 수정 사항이 사라지므로 별도로 메모를 해 두셔야 합니다.

참고: 이 글은 이 블로그의 초기에 작성된 글로서, 여기에서 다루는 방법은 워드프레스 코어를 수정하는 것으로 전혀 바람직하지 않습니다. 그냥 참고용으로만 활용하고 Recent Posts Widget With Thumbnails와 같은 플러그인을 사용하면 좋습니다.

워드프레스의 기본 위젯은 /워드프레스 설치 폴더/wp-includes/ 아래의 default-widgets.php 파일입니다. 하지만 Polylang 같은 다국어 번역 플러그인이 설치된 경우 다른 파일을 수정해야 합니다. 가령 Polylang의 경우 /워드프레스 설치 폴더/wp-content/plugins/polylang/include/ 아래의 widget-recent-comments.php 파일을 수정하면 됩니다.

default-widgets.php(또는 recent-comments.php) 파일에서 다음에 해당하는 코드 부분을 적절히 수정하여 최근 댓글 위젯의 모양을 변경할 수 있습니다.

foreach ( (array) $comments as $comment) {
$output .= '<li class="recentcomments">';
/* translators: comments widget: 1: comment author, 2: post link */
$output .= sprintf( _x( '%1$s on %2$s', 'widgets' ),
'<span class="comment-author-link">' . get_comment_author_link() . '</span>',
'<a href="' . esc_url( get_comment_link( $comment->comment_ID ) ) . '">' . get_the_title( $comment->comment_post_ID ) . '</a>'
);
$output .= '</li>';
}
}
$output .= '</ul>';

아바타를 추가하려면 다음 함수를 적절한 곳에 추가합니다(숫자를 적절히 수정).

get_avatar( $comment, '53' )

그리고 댓글 요약문은 다음 함수를 사용합니다.

wp_html_excerpt( $comment->comment_content, 45 )

그리고 최종적으로 CSS를 적절히 수정해야 합니다. 위의 방법을 사용하여 수정한 예를 살펴보면:
How to hack the default Recent Comments Widget in WordPress
아바타를 왼쪽에 배치했고 댓글 요약문을 추가했습니다. 원하는 경우 글 제목의 위치도 코드 수정을 통해 변경할 수 있습니다.

이 방법은 별도의 플러그인을 사용하지 않고 최근 댓글 위젯에 아바타와 댓글 요약을 추가하려는 경우에 유용합니다.


8개 댓글

    1. 단순히 제목만 추가하고 싶은 경우에는 외모 > 위젯의 사이드바 영역에서 블록 에디터로 제목 블록을 추가하시면 됩니다.

      1. 제목 블록을 추가하고 최근 댓글 위젯과 그룹화를 하면 되는 거였군요 ㅎㅎ 감사합니다!

  1. ChatGPT가 아래와 같은 함수 코드를 만들어 줬는데 먹히지가 않네요 ㅠㅠ

    function custom_recent_comments_title( $args ) {
    $args['before_title'] = '<h2 class="widget-title">최근 댓글</h2>';
    return $args;
    }
    add_filter( 'widget_title_args', 'custom_recent_comments_title' );

  2. 현재 댓글은 Disqus로 변경한 상태입니다.
    Disqus도 나름대로 괜찮은 것 같습니다.
    특히 Disqus의 경우 SEO에도 유리하다고 합니다.

    1. 제 블로그를 방문해주셔서 감사합니다.

      나중에 한 번 확인하여 올려보겠습니다.

      그럼, 즐거운 하루되세요.

댓글 남기기

* 이메일 주소는 공개되지 않습니다.