안녕하세요. 질문에 앞서 KBoard 만들어주셔서 너무 감사드립니다. 홈페이지를 운영하는데 있어서 너무나 많은 도움을 받고있습니다.
다름이 아니라 기본 스킨에는 적용이 안된 추천/좋아요 기능을 넣으려고 코드를 만지고 있는데 아직 php 기본 지식이 얕아 막히네요..
우선 다음과 같이 document.php에 like링크를 넣었습니다.
<a href="<?php $board->likeContent($_SERVER['REMOTE_ADDR'], $content->uid) ?>">Like</a>
그 다음은 KBoard.class.php안에 링크를 누르면 likes 테이블에 아이피와 글 uid를 넣는 sql를 썼습니다.
public function likeContent($user_ip, $content_id){
global $wpdb;
$wpdb->query("
INSERT INTO `{$wpdb->prefix}kboard_board_likes` (`user_ip`, `content_id`) VALUE ('$user_ip', '$content_id')
");
}
이 후엔 카운트 sql를 써서 Like 링크 옆에 return하려고 하는데요..
문제는 Like 링크를 누르기도 전에 document.php가 로딩이 되면 likeContent function이 실행됩니다..
Like 링크를 누를때만 function이 실행되도록 하려면 어떻게 해야하나요?
감사합니다.
KBoard 질문이라기보단 html 또는 자바스크립트 질문이구요 ㅎㅎ
php와 html 별개라고 보셔야 합니다.
html 속성안에 php 코드를 넣었지만 php는 그대로 코드를 실행해버립니다.
html로 php코드의 실행을 컨트롤 할 수 없습니다.
즉, 링크를 눌렀을때 라는건 html 속성 또는 자바스크립트로 해결하셔야 합니다. (php로는 링크를 눌렀을때 라는건 없습니다.)
방법은 링크를 눌렀을때 다른 php 파일을 호출하셔야 합니다.
링크를 눌렀을때 php 코드를 실행하시려면
<?php $board->likeContent($_SERVER['REMOTE_ADDR'], $content->uid) ?>
위 코드는 test.php 파일에 넣고 링크에 파일의 주소를 입력하시면 됩니다.
<a href="./test.php">Like</a>
이런식이겠죠. (물론 이건 예제이기 때문에 이대로는 사용하실 수 없습니다.)
ajax 와 같은 자바스크립트 기술을 사용해서 test.php 파일을 호출해주시면 페이지 이동 없이 호출이 가능합니다.
jQuery를 사용하시면 쉽습니다.
그리고 워드프레스 ajax 문서를 참고 해주세요^^
https://codex.wordpress.org/AJAX_in_Plugins
https://codex.wordpress.org/Plugin_API/Action_Reference/wp_ajax_(action)
감사합니다 ^^ 많은 도움 되었습니다