안녕하세요. 질문에 앞서 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)