인프런 커뮤니티 질문&답변

YOU&ME님의 프로필 이미지

작성한 질문수

워드프레스 제대로 개발하기 - 클라이언트 편

워드프레스 댓글 수정 삭제

해결된 질문

24.06.07 13:32 작성

·

152

0

안녕하세요. 인프런을 통해 개발자님 강의 잘 들어보고 여러가지로 배우고 있습니다.
그러던 중에 댓글형식이 워드프레스는 우리나라와 달리 수정 삭제에 제한이 조금 있더군요.

그래서 프론트엔드에서 댓글을 익명으로 패스워드를 걸어 작성하고, 수정, 삭제가 가능하게 구현하고 싶은데 그 방법을 알 수 있을까해서 문의드립니다.

검색하다 아래 내용을 발견했는데 쿠키를 통해서 시간상으로 수정 삭제가 되게 구현하신 방법이더군요.

http://biscuitpress.kr/519


책관련 사이트 찾아보다 여기 문학수첩 사이트도 워드프레스로 만들어진것 같은데,,,

패스워드를 넣는 댓글이 제가 구현하고 싶은 방법으로 만들어진 것 같더군요. 혹시나 방법을 알 수 있을까해서 문의드려 봅니다 ^^ 감사합니다

http://moonhak.co.kr/《반연간-문학수첩》-2024년-상반기호-출간-기념-매거진/

 

답변 2

0

워드프레스 개발님의 프로필 이미지
워드프레스 개발
지식공유자

2024. 06. 10. 03:31

안녕하세요, YOU&ME 님. 질문 감사합니다.

댓글에 비밀번호를 넣고, 그걸 이용해서 수정과 삭제를 할 수 있게 만들려고 하시는군요.

워드프레스는 기본적으로 쿠키를 기반으로 댓글 입력을 기억합니다. 계정에 로그인해 댓글을 입력한 것이 아니라면 댓글을 입력한 컴퓨터에서만 댓글을 수정할 수 있죠.

제가 관련 작업을 해 본 것은 아닙니다. 알려주신 《반연간 문학수첩》 2024년 상반기호 출간 기념 매거진 토크는 biscuitpress라는 업체에서 커스텀 작업을 한 것으로 보입니다. 따라서 소스에 접근하기는 힘들 것 같습니다. (다만, 질문에서도 언급하신 블로그를 운영중이신 것 같으니 직접 물어 보셔도 좋을 것 같습니다. 원리를 알려 달라고 하면 대략의 방법은 알려주실 지도 모르니까요.)

관련 플러그인은 없는지 찾아 봤는데 쉽게 나오지는 않는군요. 어쩌면 그런 플러그인이 없을지도 모르겠습니다.

코딩 개요

제가 관련 작업을 해 본 것은 아니지만, 아래처럼 기본적인 설계를 해볼 수 있을 것 같습니다.

만약 비밀번호를 기반으로 댓글을 수정할 수 있게 하시려면 댓글 출력 쪽에 필드를 추가로 만드시고, 댓글이 신규 저장되는 시점에 훅을 걸어서 코멘트 메타 정보로 비밀번호를 저장하셔야 할 것 같습니다.

디비 테이블을 보시면 wp_commentmeta라는 테이블이 있어요. 포스트메타가 포스트에 관한 여러 정보를 저장하는 테이블이라면 코멘트메타는 코멘트에 관한 여러 정보를 저장하는 테이블입니다.

사용법은 포스트메타와 거의 비슷합니다. update_comment_meta 함수를 이용해서 저장하면 됩니다.

댓글이 신규 저장되는 시점의 훅은 comment_post입니다. 따라서 여기에 코멘트메타를 저장하는 로직을 넣으시면 되겠죠.

댓글을 수정하는 로직을 또 만드셔야 하겠죠. 일단 모든 댓글에 수정 버튼이 있어야 할 것 같습니다. 수정 버튼을 누르면 수정 UI가 나와야겠죠. 이 때 비밀번호도 같이 입력할 수 있도록 나와야 할 겁니다.

여기서 댓글을 수정하는 경우 비밀번호가 맞는지 비교를 해 봐야겠죠. 이 비교를 수행하는 타이밍은 wp_update_comment_data 훅이 좋을 것 같습니다. wp-includes/comment.php의 2565라인을 보시면 관련 코드가 있는데요. 아래와 같이 필터를 거친 다음에 WP_Error 객체인지를 검사합니다. 즉, 비밀번호가 맞지 않으면 WP_Error 객체의 인스턴스를 리턴해 주면 되는 거죠.

$data = apply_filters( 'wp_update_comment_data', $data, $comment, $commentarr );

// Do not carry on on failure.
if ( is_wp_error( $data ) ) {
    if ( $wp_error ) {
        return $data;
    } else {
        return false;
    }
}

댓글 삭제도 마찬가지 로직을 따르면 될 것 같습니다. trash_comment 훅을 사용하시면 될 것 같고요.

생각만 한 거라 실제로 할 때는 시행착오가 있을 것이고 제가 말씀드린대로 바로 되지는 않을 겁니다. 그러니 시작 단계의 아이디어로 참고해 주세요.

그럼 도움이 되었으면 좋겠습니다.

좋은 질문해 주셔서 감사합니다.

(블로그에 남겨 주신 문의도 확인했습니다. 고민을 좀 하고 플러그인도 찾아 보는 사이에 인프런에 질문을 남겨 주셔서 여기에서 답을 드립니다 )

YOU&ME님의 프로필 이미지
YOU&ME
질문자

2024. 06. 10. 13:53

감사합니다^^

0

인프런 AI 인턴님의 프로필 이미지

2024. 06. 09. 13:36

안녕하세요, 인프런 AI 인턴입니다.

제공해드린 정보에는 워드프레스 댓글 수정 삭제 방법에 대한 구체적인 답변이 포함되어 있지 않습니다. 따라서, 워드프레스에서 익명으로 패스워드를 걸어 댓글을 작성하고, 수정, 삭제가 가능한 방법에 대해 직접적인 답변을 드리기 어렵습니다.

워드프레스 관련하여 특정 기능을 구현하고자 하시면, 워드프레스 공식 포럼이나 개발자 커뮤니티에 질문을 올려보시는 것을 추천드립니다. 또한, 워드프레스 플러그인을 활용하거나 커스텀 코드를 작성해 해당 기능을 구현하는 방법에 대해 조사해보시기 바랍니다.

도움이 되었길 바라며, 추가적인 질문이 있으시면 언제든지 문의주세요. 감사합니다!

YOU&ME님의 프로필 이미지

작성한 질문수

질문하기