게시물이 업데이트되면 몇 가지 후크가 발생합니다.
'pre_post_update'
액션이 바로 해고 하기 전에 : 포스트가 업데이트 될 때, 인수가 2 있습니다 통과 $post_ID
와 $data
그의 배열입니다 모든 포스트 테이블의 다른 데이터베이스 colums
'transition_post_status'
업데이트시 발생하는 후크이며 $ new_post_status $old_post_status
및 $post
(object)의 3 개 인수를 전달 합니다.
- 그런 다음 다른 두 개의 전환 후크가 발생하지만 동적으로 명명됩니다. 즉, 실행 된 효과적인 조치는 이전 및 새 게시물 상태에 따라 다릅니다.
"{$old_status}_to_{$new_status}"
그리고 "{$new_status}_{$post->post_type}"
. 먼저 포스트 오브젝트 만 인수로 전달하고 두 번째 오브젝트는 포스트 ID 및 포스트 오브젝트를 전달합니다. 여기에서 설명서를 찾으 십시오 .
'edit_post'
두 개의 인수를 전달합니다 : $post_ID
및 $post
(개체)
'post_updated'
그 패스 3 인자 : $post_ID
, $post_after
(업데이트 후 포스트 개체), $post_before
(후 개체 업데이트 전)
- 또 다른 동적 훅 :
"save_post_{$post->post_type}"
포스트 유형에 따라, 예를 들어, 표준 게시물입니다 'save_post_post'
및 페이지입니다 'save_post_page'
이 훅 패스 3 개 인자 : $post_ID
, $post
(객체에게) 및 $update
그, 당신은 업데이트를 수행 할 때 참 (true 또는 false) 부울입니다 사실이 후크는 게시물이 처음 저장 될 때도 시작됩니다.
- '
save_post
' 업데이트 및 첫 번째 저장시 시작되며 이전 후크의 동일한 3 개의 인수를 전달합니다.
- '
save_post_{$post_type}
' 업데이트 및 첫 번째 저장시 시작되며 이전 후크의 동일한 처음 두 인수를 전달합니다.
- 마지막으로 '
wp_insert_post
' 가 있으며 업데이트와 첫 저장시 모두 시작되며 이전 2 개의 후크와 동일한 3 개의 인수를 전달합니다.
이 후크는 게시물이 업데이트 될 때마다 백엔드의 관리 페이지를 통해 wp_update_post
또는 "수동으로" 또는 wp_insert_post
기능을 사용하여 업데이트 될 때를 통해 시작됩니다 .
관리자 페이지를 사용하여 게시물을 업데이트하면 추가 후크가 발생합니다 (예 : 'update_post_redirect'
또는) 'post_updated_messages'
. (참조 이 와 이 사용 예제 WPSE 답변).
일부 후크 인수를 사용하려면 첫 번째 인수가 아니며 add_action
호출 에서 명시 적으로 선언해야 합니다.
예를 들어, 당신이 사용하려는 경우 '$update'
인수 (3가 그)의 'save_post'
후크 추가 필요 3
로 $accepted_args
에 PARAM add_action
( 문서 참조 )
// if you don't add 3 as as 4th argument, this will not work as expected
add_action( 'save_post', 'my_save_post_function', 10, 3 );
function my_save_post_function( $post_ID, $post, $update ) {
$msg = 'Is this un update? ';
$msg .= $update ? 'Yes.' : 'No.';
wp_die( $msg );
}
타이밍에 관한 마지막 참고 사항 : 작업이 트리거 되기 전에add_action
호출 되어야 합니다. 그렇지 않으면 아무것도하지 않습니다.
예를 들어이 코드 :
wp_update_post( $post );
add_action( 'save_post', 'my_function', 10, 3 );
후크가 실행 된 후에 작업이 추가되므로 아무 작업도 수행하지 않습니다. 실제 코드에서는 항상 그렇지는 않습니다.
save_post
이 있습니까, 오타입니까, 아니면 원래 코드에 있습니까? 또한 개발하는 동안 디버깅 을 활성화하십시오 .