워드프레스 기초 – Hook (save_post 기능)

add_action(); – 어떤 이벤트가 일어날 때 특정 함수를 실행 시킴
do_action(); – 사용자 정의 액션 추가할때

add_action(‘save_post’, ‘log_when_saved’);
해석 >> save_post 기능이 우측 함수명이 호출될 때 실행됨.

예를들어

post 1 저장 됨
post 2 저장 됨
post 3 저장 됨

위와 같이 포스트가 저장될 때 마다 로그파일을 저장하고싶다면 아래 코드를 functions.php 파일에 업로드

add_action('save_post', 'log_when_saved'); 
// save_post 이벤트가 일어날 때 log_when_saved 함수를 실행한다.

function log_when_saved( $post_id){ // parameter : $post_id

    if ( ! ( wp_is_post_revision ($post_id)) || wp_is_post_autosave( $post_id ) ) {
    return;
    }

    $post_log = get_stylesheet_directory() . '/post_log.txt'; 
    // $post_log에 stylesheet(style.css)가 저장되있는 경로(현재 테마안의) + /post_log.txt를 지정해준다.

    $message = get_the_title( $post_id ) . '저장됨';
    // $message에 'post_id'에 해당하는 제목을 가져와 저장


if(file_exists( $post_log))
// 만약 파일이 존재한다면
{
    
    $file = fopen( $post_log, 'a' );
    // 'post_log'(.../post_log.txt) 파일을 로드하여 쓰기전용으로 지정, 파일 내용을 그대로 냅두고 추가 방식, 내용 끝부분에서 시작

    fwrite($file, $message."\n");
    message 내용을 작성하고 줄바꿈
    

} else { // 존재하지 않는다면
 
    $file = fopen( $post_log, 'w');
    // 'post_log'(.../post_log.txt) 파일을 쓰기전용으로 지정, 파일이 없다면 새로 생성, 처음 위치에서 시작

    fwrite( $file, $message."\n");
    // 'message' 내용을 작성하고 줄바꿈
} 

fclose($file);
// 파일을 사용했으니 최종적으로 닫아주기 (필수)

}

// fopen 참고 : https://unikys.tistory.com/273


! save_post만 했을 경우 -> 처음 임시글 자동저장, 자동저장, save눌렀을 때 저장 : 총 3개 로그가 찍힘.


! 아래 코드를 추가하여 리비전될 경우, 자동저장 될 경우 무시처리 한 후

if ( ! ( wp_is_post_revision ($post_id)) || wp_is_post_autosave( $post_id ) ) {
    return;
}

글 작성 과정 :
새 글 추가 >> 임시저장 >> “업데이트” 클릭 >> 저장



수정중..

참고자료 :
https://www.youtube.com/watch?v=9GuJi8dYuAs
https://developer.wordpress.org/reference/functions/add_action/

* 공부용 자료로, 정확하지 않을 수 있으며 공식 홈페이지 및 유튜브를 참고하였습니다.

Leave a Reply

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다