Existe uma função wordpress para apagar uma entrada na tabela de inscrição?

4

Eu gerencio um processo de registro de usuários (em um WP multisite).

No entanto, alguns dos meus usuários podem criar novos na primeira página. Se você olhar para este post você vai descobrir os 3 estágios para isso:

  1. Use wpmu_signup_user() para adicionar uma entrada para um novo usuário (futuro) na tabela inscrições (você pode impedir que o WP envie um email de notificação nesse estágio, se desejado, com o gancho direito )
  2. Use uma consulta SQL para obter o activation_key gerado nessa entrada da tabela inscrições desse usuário
  3. Use wpmu_activate_signup($key) para criar uma entrada na tabela users

Isso funciona bem, mas depois que o usuário é criado (com uma entrada na tabela users ) eu precisaria excluir essa entrada que ainda está na tabela de inscrições e é inútil. Alguém saberia como fazer isso wp_properly ou devo fazer uma consulta de exclusão?

    
por Pierre 20.08.2016 / 16:50

1 resposta

2

Você está correto sobre a linha não ter muito uso fora de um limite de dois dias em que um usuário não ativa sua conta.

Eu dei uma olhada na base de código e posso confirmar que não há função da API para remover uma entrada de inscrição. O único código que remove uma inscrição é a função wpmu_validate_user_signup() . Ele verifica as inscrições atuais para o mesmo user_login e user_email . Se algum deles existir, ele verificará se esse usuário se registrou nos últimos dois dias. Eles têm dois dias para ativar sua conta ou que user_login ou user_email fica disponível para outra pessoa.

O que eu faria é ligar ao gancho wp_activate_user para removê-lo imediatamente.

add_action( 'wpmu_activate_user', function( $user_id, $password, $meta ) {
    global $wpdb;
    // Sadly the user email isn't passed into the action
    $user = get_user_by( 'id', $user_id );
    if( $user ){
        $wpdb->delete( $wpdb->signups, array( 'user_email' => $user->user_email ) );
    }
}, 0, 3);
    
por Brian Fegter 10.02.2017 / 11:28