
요즘 좋아요 토글이 대세인 것 같습니다. 그래서 몇번 좋아요를 취소할 수 있는지 궁금해하시는 분들이 있어 자료를 공유하고자 합니다.
아래의 간단한 코드를 추가하면 좋아요를 한번 더 눌렀을 때 취소됩니다. 그 때 DB에서 유저의 ID가 삭제됩니다. 그러나 싫어요는 더이상 사용할 수 없습니다.

kboard_vote 테이블에 있는 추천 값을 추가하거나 삭제합니다.

그 분기점을 기반으로 kboard_board_content 테이블에 있는 게시물의 값에 좋아요를 1개 추가하거나 1개 줄여서 반환합니다.
.kboard-button-unlike {
display: none;
}먼저 싫어요를 숨겨야 합니다. display: none; 를 통해 숨김 처리를 합니다.
class/KBController.class.php 에 접근하여 1160줄을 확인해봅니다.
/**
* 게시글 좋아요
*/
public function documentLike(){
check_ajax_referer('kboard_ajax_security', 'security');
if(isset($_POST['document_uid']) && intval($_POST['document_uid'])){
$content = new KBContent();
$content->initWithUID($_POST['document_uid']);
if($content->uid){
$board = $content->getBoard();
if($board->isVote()){
$args['target_uid'] = $content->uid;
$args['target_type'] = KBVote::$TYPE_DOCUMENT;
$args['target_vote'] = KBVote::$VOTE_LIKE;
$vote = new KBVote();
if($vote->isExists($args) === 0){
$vote->insert($args);
$content->like = $content->like + 1;
$content->vote = $content->vote + 1;
$content->updateContent();
wp_send_json(array('result'=>'success', 'data'=>array('vote'=>intval($content->vote), 'like'=>intval($content->vote), 'unlike'=>intval($content->unlike))));
}
else{
$content->like = $content->like - 1;
$content->vote = $content->vote - 1;
$content->updateContent();
$vote->delete($args);
wp_send_json(array('result'=>'success', 'data'=>array('vote'=>intval($content->vote), 'like'=>intval($content->vote), 'unlike'=>intval($content->unlike))));
}
}
else if(!is_user_logged_in()){
wp_send_json(array('result'=>'error', 'message'=>__('Please Log in to continue.', 'kboard')));
}
}
}
}
/**
* 게시글 싫어요
*/
function documentUnlike(){
wp_send_json(array('result'=>'error', 'message'=>__('싫어요 기능이 비활성화되었습니다.', 'kboard')));
}