목차

한테마 2014 두산 이슈 처리

KK I Like It 플러그인 분석

플러그인 동작 설명

KK I Like It 플러그인은 특정 포스트나 페이지에 유저의 선호도를 측정할 수 있는 플러그인입니다. 페이스북의 “좋아요 (Like)“와 유사합니다.

데이터 저장 영역

플러그인을 설치하면 두 개의 테이블이 생성됩니다.

이 두 테이블 중 wp_kklikeuser 테이블에만 데이터가 기록되며, wp_kklike는 별도의 용도로 사용되는 것으로 보입니다.

wp_kklikeuser 테이블

wp_postmeta

데이터 읽기 인터페이스

WP Loop 안에서 “좋아요” 수를 읽기 위해서는 kkLikeRating() 함수를 사용하면 되고, 포스트 내부에서는 쇼트코드를 사용해도 됩니다. 자세한 사항은 플러그인의 문서를 참조하면 됩니다.

위에 언급된 플러그인에서 정의된 함수도 결국은 wp_*meta 테이블의 meta_key를 이용하게 되므로 별도로 get_postmeta() 함수 등을 사용해도 됩니다.

데이터 쓰기 인터페이스

admin-ajax.php 로 다음과 같은 파라미터를 보내는 것으로 처리됩니다

wp favorite post 플러그인 분석

플러그인 동작 설명

WP Favorite Posts 플러그인은 특정 포스트, 페이지에 별도의 북마크를 기록할 수 있습니다. 웹브라우저의 일반적인 북마킹이 아닌, 워드프레스 사용자들이 내부의 포스트만 소위 '스크랩'하기 위한 플러그인입니다.

데이터 저장 영역

이 플러그인은 별도의 데이터베이스 테이블을 생성하지 않습니다.

wp_usermeta

meta_key “wpfp_favorites”에 각 사용자의 모든 북마크를 serialized 된 상태로 저장합니다.

wp_postmeta

meta_key “wpfp_favorites”에 각 포스트가 모두 몇 번 북마크 되어 있는지 정수로 저장합니다. 누적 회수는 아니며 누군가 어떤 post를 favorite에서 삭제하면 그만큼 감소하게 됩니다.

비회원을 위해서도 북마크를 할 수 있도록 제공합니다만, 이 때는 사용자의 브라우저 쿠키에 저장하므로 일관성이 떨어집니다.

데이터 읽기 인터페이스

해당 포스트가 유저에 의해 북마크 되었는지 판별하기 위해서는 meta key wpfp_favorites를 가져와 처리하면 됩니다.

데이터 쓰기 인터페이스

아래와 같이 워드프레스 루트 URL로 포스트 ID와 액션을 파라미터로 넘겨주면 됩니다.

What's up? 뷰에서 글 쓰기 인터페이스

What's up 메뉴는 DW Question Answer 플러그인 기반으로 만들어져 있습니다. 그러므로 해당 플러그인의 동작 방식을 파악할 필요가 있습니다.

동작 방식

DW Question Answer (이하 dwqa)는 별도의 테이블을 생성하지는 않지만, 질문과 답변 글 관리를 위해 custom post를 정의합니다.

질문과 답변의 상하관계를 위해 dwqa-answer 타입 포스트는 메타 키 “_question”를 가집니다. 이 키의 값은 dqwa-question 포스트의 ID입니다.

포스트 작성

답글, 혹은 질문 작성을 위해서는 wp_insert_post() 함수를 사용하면 됩니다. 함수의 첫번째 인자로 $post array를 요구하는데, 상당히 많은 항목을 필요로 합니다. 그러나 많은 부분은 기본값으로 두어도 무방합니다

항목 설명
ID 항상 새로운 항목을 작성하게 되므로 이 키의 값은 쓰지 않거나, 아예 설정하지 않습니다.
post_content 포스트 내용입니다.
post_name 포스트 슬러그. sanitize_title()를 이용해 생성합니다.
post_title 사용자가 폼에서 입력한 포스트 제목입니다.
post_status 이 경우 바로 'publish' 되어야 하므로 값은 항상 'publish'로 맞춥니다.
post_type 질문의 경우 dwqa-question, 답변의 경우 dwqa-answer
post_author 기본값은 현재 사용자의 ID이므로, 이 경우라면 별도로 설정하지 않아도 됩니다.
ping_status 기본값으로 으로 둡니다.
post_parent 기본값인 0으로 둡니다.
menu_order 기본값인 0으로 둡니다.
to_ping 기본값으로 둡니다.
pinged 기본값으로으로 둡니다.
post_password 기본값인 공백으로 둡니다.
guid 이 키는 아예 넣지 않아도 됩니다.
post_content_filtered 이 키는 아예 넣지 않아도 됩니다.
post_excerpt 이 키는 아예 넣지 않아도 됩니다.
post_date 넣지 않아도 됩니다.
post_date_gmt 넣지 않아도 됩니다.
comment_status 넣지 않아도 됩니다.
post_category 포스트의 카테고리를 지정합니다. array(<category id>, …) 기본은 empty
tags_input 포스트의 태그를 지정합니다.
tax_input
array( <taxonomy> => <array | string> ) // For custom taxonomies. Default empty. 
page_template 페이지 경우에 템플릿을 지정하기 위한 메뉴이며, 일반 포스트에서는 사용하지 않습니다.

함수 호출 후 생성된 포스트의 ID를 리턴하므로 답변의 경우 이 아이디를 이용해 _question 메타 키의 값을 별도로 채우면 됩니다.