안녕하세요 게시물이 휴지통으로 이동하는 동안 수행 할 수있는 작업이 있습니다 …. delete_post 및 deleted_post를 시도했습니다. 그것은 각 작업에 대해 두 번 작동하지만 (codex로 작성된 작업 전후) 출력은 휴지통에서 게시물을 삭제할 때만 표시됩니다. 예 어떤 이유로 인해 자신의 게시물이 휴지통으로 이동되었다는 내용의 이메일을 작성자에게 보내고 싶습니다. 일부 user_meta를 업데이트하십시오. 내가 사용하면
add_action('deleted_post', 'emailUser');
또는
add_action('delete_post', 'emailUser');
게시물이 휴지통에서 삭제 된 경우에만 작동합니다. . .
업데이트 : 휴지통 게시물을 사용하여 작동하도록했습니다.
add_action('trash_post', 'emailUser');
그러나 기능의 이중 실행 문제는 여전히 존재합니다. . .
답변
이것은 트릭을 할 것입니다!
add_action('trash_post','my_trash_post_function',1,1);
function my_trash_post_function($post_id){
if(!did_action('trash_post')){
// do stuff
}
}
여기에 함수를 추가하고 did_action을 사용하여 후크가 두 번 이상 실행되지 않도록합니다.
http://codex.wordpress.org/Function_Reference/did_action
언제나처럼, 후크 이러한 종류의 형태를 취 {post_status}_{post_type}
하므로 trash_post
, trash_page
, trash_customposttype
, publish_page
등
답변
게시물이 휴지통으로 이동되면 휴지통이 비워지면 다시 호출됩니다.
함수는 이름에 게시물 ID가있는 옵션이 있는지 확인할 수 있습니다. 옵션이 없으면 이메일을 보낸 다음 옵션을 설정합니다. 옵션이있는 경우 (예 : 두 번째로 호출되는 경우) 이메일을 보내지 않습니다.
그런 다음 데이터베이스를 채우지 않도록 옵션을 삭제하십시오.
add_action( 'delete_post', 'emailUser' );
function emailUser( $postid ) {
if ( ! get_option( 'user_emailed_' . $postid ) ) {
// send email here
update_option( 'user_emailed_' . $postid, 'anything' );
} else {
delete_option( 'user_emailed_' . $postid );
}
}
그것이 작동하는지 알려주세요!
답변
add_action('trash_post', 'trash_post_function_name');
WP 4.7.5에서는 위의 후크가 작동하지 않았습니다.
이것이 나를 위해 일한 것입니다
add_action('wp_trash_post', 'trash_post_function_name');