Excluir mensagem por usuário

Foi tentando encontrar uma maneira de remover posts de um usuário quando seu papel foi alterado. Estou usando Woo assinaturas que dá ao usuário o papel inscrito quando se juntam. No entanto, quando eles cancelam, ele descarta o papel de volta para o membro.

Agora estou tentando descobrir uma maneira de remover todas as suas postagens quando isso acontecer.

Eu tentei isso

function auto_expire_posts( $user_id, $new_role, $old_roles ) { if ($new_role == 'member') { } global $wpdb; $update = array( 'post_type' => 'supplier-showcase', 'post_status' => 'trash' ); $where = array( 'post_type' => 'supplier-showcase', 'post_status' => 'publish', 'post_author' => $user_id ); $updated = $wpdb->update( $wpdb->posts, $update, $where ); } add_action( 'set_user_role', 'auto_expire_posts', 10, 3 ); 

Mas não funciona, ele irá excluir as postagens dos usuários sempre que o perfil for atualizado – a mudança de function independentemente.

Eu pensei que sobre um script no login, quando os usuários fizerem login, eles são direcionados para sua conta. então eu pensei acrescentando

  ID; global $wpdb; $update = array( 'post_type' => 'supplier-showcase', 'post_status' => 'trash' 'post_author' => $user_id ); $where = array( 'post_type' => 'supplier-showcase', 'post_status' => 'publish', 'post_author' => $user_id ); $updated = $wpdb->update( $wpdb->posts, $update, $where ); } ?> 

Também tentei usar um gancho de assinaturas do Woocommerce

  add_action('woocommerce_subscription_status_cancelled', 10, 1); function auto_expire_posts($subscription) { $user_id = get_post_meta($subscription->ID, '_customer_user', true); $update = array( 'post_type' => 'supplier-showcase', 'post_status' => 'trash' 'post_author' => $user_id ); wp_update_post( $user_id $update ); } 

Eu tenho tocado com isso durante todo o dia, eu entendi, então ele funciona 100% ao mudar as funções no painel do wordpress usando o seguinte código

 function auto_expire_posts( $user_id, $new_role, $old_roles ) { if ( ! in_array( subscribed', $old_roles ) ) { return; } global $wpdb; $update = array( 'post_type' => 'menu', 'post_status' => 'trash' ); $where = array( 'post_type' => 'menu', 'post_status' => 'publish', 'post_author' => $user_id ); $updated = $wpdb->update( $wpdb->posts, $update, $where ); } add_action( 'set_user_role', 'auto_expire_posts', 10, 3 ); 

Eu também achei que as assinaturas de Woocommerce não usam o gancho set_user_role, então tentei adicionar isso, antes da minha function e ainda não funciona quando um usuário cancela sua assinatura (encontrado aqui https://docs.woocommerce.com/document/subscriptions/develop / ação-referência / )

 add_action('woocommerce_subscription_status_cancelled', 'auto_expire_posts', 10, 3); 

Solutions Collecting From Web of "Excluir mensagem por usuário"