글 저장되는 시점에 다른 데이터 저장방법

안녕하세요.

워드프레스 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; 부분을 지우신 후에 적용해보세요.

    고맙습니다.

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요