2016-08-26 2 views
1

나는 게시 된 게시물이 통과하는 정규 프로세스 외에 별도의 db 테이블에 새로 게시 된 게시물의 레코드를 배치하려고합니다.새 게시물이 WordPress에 게시 될 때 사용자 정의 INSERT MySQL 쿼리를 다른 테이블에 추가하는 방법과 위치는 어디에서?

wp-includes 폴더에 post.php에 가고, 그리고 function wp_insert_post() 내부 쿼리를 추가하지만이 Auto Drafts 및 업데이트가 될 때마다 대한 레코드를 추가 시도했습니다.

또한이 파일의 function wp_publish_post() 함수에 삽입 문을 포함시켜 보았습니다. 이것은 아무 것도하지 않습니다.

이러한 기능 중 하나에 특정 부분이 있습니까, 아니면 INSERT 진술을 새 게시물이 게시 될 때마다 추가해야한다는 다른 파일이 있습니까?

+0

https://codex.wordpress.org/Plugin_API#Hook_to_WordPress –

+0

마크 B는 지적, 당신은 후크하려고한다, 그것은 당신이 달성하려고하는 무엇을위한 최적의 솔루션입니다. 사용자 정의 플러그인을 만들고 필요한 후크를 사용하십시오. – Marcs

+0

포스트 삽입 또는 업데이트 중에 아무 것도 삽입하거나 업데이트하려는 경우 기본 파일을 변경하지 말고 wordpress 후크를 사용하십시오. 나는 포럼 링크가 https://developer.wordpress.org/reference/functions/wp_insert_post에 도움이된다고 생각합니다. –

답변

1

wp-includes 폴더에있는 post.php 파일로 이동하십시오.

wp_insert_post() 함수를 찾고이 코드를 return 문 바로 앞에 SQL 쿼리로 사용하십시오.

if ($postarr['post_status'] == 'publish') { 

    try { 
     $db = new PDO('mysql:dbname=YOURDBNAME;host=YOURHOST;charset=utf8', 
         'YOURUSERNAME', 
         'YOURPASSWORD'); 
     $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); 
     $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
    } 
    catch(PDOException $ex) { 
     echo "did not connect..."; 
    } 

    $sth = $db->prepare("INSERT INTO YourTable VALUES (?, ?, 0)"); 
    $sth->execute(array($value1, $value2)); 

}