Função a ser executada quando uma postagem é movida para a lixeira.

8

Oi existe uma ação que pode ser realizada enquanto uma postagem é movida para o lixo .... Eu tentei delete_post e deleted_post. Ele funciona, mas duas vezes para cada ação (antes e depois da ação, conforme escrito no códice), e a saída é mostrada apenas quando a postagem é excluída da lixeira. Exemplo eu quero enviar um e-mail para o autor informando que sua postagem foi movida para o lixo por algum motivo, e atualizar alguns user_meta. se eu usar

add_action('deleted_post', 'emailUser');

ou

add_action('delete_post', 'emailUser');

funciona apenas quando a postagem é excluída da lixeira. . .

Atualização: funcionou para postagens de lixo usando

add_action('trash_post', 'emailUser');

mas o problema da dupla execução da função ainda está lá. . .

    
por Harjeet Singh 28.02.2011 / 11:46

3 respostas

8

Isso fará o truque!

add_action('trash_post','my_trash_post_function',1,1);
function my_trash_post_function($post_id){
    if(!did_action('trash_post')){
        // do stuff
    }
}

Aqui, adicionamos a função e impedimos que o gancho seja executado mais de uma vez usando did_action:

enlace

Como sempre, esses tipos de ganchos assumem o formato {post_status}_{post_type} , então trash_post , trash_page , trash_customposttype , publish_page etc

    
por Tom J Nowell 05.03.2012 / 11:48
2

Essa ação será acionada uma vez quando a postagem for movida para a lixeira e, novamente, quando a lixeira for esvaziada.

Sua função pode verificar a presença de uma opção com o ID do post no nome, se a opção não estiver lá, ele envia o email e, em seguida, define a opção. Se a opção estiver lá (por exemplo, se estiver sendo chamada uma segunda vez), você não enviará o e-mail.

Lembre-se, então, de apagar a opção, para que seu banco de dados não fique cheio deles!

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 );
   }

}

Deixe-me saber se isso funciona!

    
por Simon Blackbourn 28.02.2011 / 13:35
1
add_action('trash_post', 'trash_post_function_name');

O gancho acima não funcionou para mim no WP 4.7.5.

Isso é o que funcionou para mim

add_action('wp_trash_post', 'trash_post_function_name');
    
por Mohamed Salem Lamiri 27.10.2017 / 14:27