안녕하세요.
워드프레스 KBoard(케이보드) 사용자인데요..
궁금한점이 있어서 질문드립니다.
글쓰기 누른다음에 저장하기 누르면 글이 저장이 되고 게시글이 남는데,
이 글이 저장하는 시점에 추가로 쿼리문을 사용하고 싶은데,
커뮤니티에서 검색해보니 다음과 같은 글을 보게되었습니다.
<참고 글 내용>
add_action('kboard_document_insert', 'kboard_document_insert_test', 10, 2);
function kboard_document_insert_test($content_uid, $board_id){
if($board_id == 6){
// 이렇게 하시면 id 값이 6번인 게시판일 경우에 실행됩니다.
}
}
위와 같이 모든글이 등록되고 수정할때 kboard_document_insert_test 함수가 실행된다고 한다면,,
이함수가 실행될때 아래와 같은 코드를 추가시에 적용이 되는지 궁금합니다.
add_action('kboard_document_insert', 'kboard_document_insert_test', 10, 2);
function kboard_document_insert_test($content_uid, $board_id){
if($board_id == 3){
$conn=mysql_connect('localhost', 'testid', 'testpw');
mysql_select_db("testdb",$conn);
$sql = "SELECT * FROM wp_kboard_board_option WHERE option_key='status' and content_uid = ".$content->uid." LIMIT 1";
$sql_result=mysql_query($sql,$conn);
$row = mysql_fetch_object($sql_result);
$status = $row->option_value;
//이렇게 해서 얻는 값은 상태 값입니다. 예시로 값이 '진행' 이란 상태값을 문자열을 받았다고 한다면.. 이걸 다시 아래 쿼리문을 사용해서 적용하고 싶은데요..
$sql2 = "update wp_kboard_board_option set option_value='.$status.' where content_uid=203 and option_key='salesstatus'";
$sql_result2=mysql_query($sql2,$conn);
이렇게하면 정상적으로 작동을 할까요?? 그리고 문제가 안될까요?
그리고 글등록시 해당글에대한 content_uid를 이함수에서 파라미터로 받고 싶은데 이것도 가능한지요??
그리고 이 함수 실행시 출력되는 값을 브라우저 콘솔로 보고 싶은데 어떻게 하면 볼수있을까요??
}
}
안녕하세요~^^
워드프레스에서 DB에서 데이터를 가져오거나 입력하려면 $wpdb를 사용하시면 됩니다.
https://codex.wordpress.org/Class_Reference/wpdb
만약 다른 DB로 연결하시는 거라면
아래처럼 새롭게 wpdb 클래스를 초기화해서 그 변수를 사용하시면 됩니다.
새로운 MySql DB에 접속할 수 있습니다.
$mydb = new wpdb('username', 'password', 'database', 'localhost');
$results = $mydb->get_results("SELECT~");
예제를 작성해봤습니다. 응용해보시겠어요?
add_action('kboard_document_insert', 'kboard_document_insert_test', 10, 2);
function kboard_document_insert_test($content_uid, $board_id){
global $wpdb;
$content = new KBContent($content_uid);
$status = $wpdb->get_results("SELECT * FROM `{$wpdb->prefix}kboard_board_option` WHERE `option_key` = 'status' and `content_uid` = '{$content->uid}' LIMIT 1");
if($result = '진행'){
$wpdb->query("UPDATE `{$wpdb->prefix}kboard_board_option` set `option_value` = '{$status}' WHERE `content_uid` = '203' and `option_key` = 'salesstatus'");
}
echo $result; exit;
}
글 등록 시 해당 글에 대한 content_uid는
kboard_document_insert 액션 함수에서 게시글 등록 후에 $content_uid와 $board_id를 파라미터로 받아옵니다.
PHP 코드를 브라우저 콘솔로 확인하시려면 ajax로 구현했을 때 확인할 수 있습니다.
브라우저 콘솔이 아닌 브라우저 페이지 자체에서 확인하시려면
위 코드에서 echo $result; exit; 부분을 추가하시면 글 등록 후 함수가 실행되며 쿼리 결과가 페이지 출력됩니다.
실제 적용하실 때는 echo $result; exit; 부분을 지우신 후에 적용해보세요.
고맙습니다.