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


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/
* 공부용 자료로, 정확하지 않을 수 있으며 공식 홈페이지 및 유튜브를 참고하였습니다.