태그 보관물: functions

functions

게시물을 휴지통으로 옮길 때 실행하는 기능입니다. 때만 표시됩니다. 예 어떤 이유로 인해

안녕하세요 게시물이 휴지통으로 이동하는 동안 수행 할 수있는 작업이 있습니다 …. 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');


답변