Atenção!

Este artigo contém código PHP e destina-se a programadores. Oferecemos este código como cortesia, mas não prestamos suporte para personalizações de código ou desenvolvimento de terceiros.

Para orientação adicional, consulte o tutorial da WPBeginner sobre como adicionar código personalizado.

Ignorar

Como reenviar automaticamente emails de ativação de utilizador

Visão geral

Gostaria de reenviar automaticamente os emails de ativação de utilizador se os utilizadores ainda não ativaram as suas contas? Vamos mostrar-lhe como fazer isto com PHP. Com o WPForms User Registration addon, pode ativar o formulário de registo para ter emails de ativação de utilizador enviados. Usando um pequeno trecho de código, pode facilmente configurar uma função que reenvia os links de ativação para estes utilizadores, basta configurar a função e é tudo o que tem de fazer.

Configuração

Primeiro, terá de configurar o seu formulário e ativar a ativação de utilizador no separador User Registration. Se precisar de ajuda para configurar isto, consulte esta documentação.

ativar a configuração de ativação de utilizador no separador User Registration das definições do formulário.

Depois de ter configurado o seu formulário e adicionado os seus campos, clique no separador User Registration em Settings do formulário. Em seguida, clique na opção para Enable user activation.

Em seguida, adicione este trecho de código ao seu site. Se precisar de alguma assistência sobre como adicionar trechos de código ao seu site, consulte este tutorial.

/**
 * Grab the users who have registered but not activated their account
 *
 * @link   https://wpforms.com/developers/how-to-automatically-resend-user-activation-link-emails/
 */

function user_registration_resend_activation() {

   $unapproved_users = get_users(
      [
         'meta_key'   => 'wpforms-pending',
         'meta_value' => true,
      ]
   );

   foreach ( $unapproved_users as $user ) {

      \WPFormsUserRegistration\SmartTags\Helpers\Helper::set_user( $user );

      wpforms_user_registration()->get( 'email_notifications' )->resend_activation( $user->ID );
   }
}

add_action( 'user_registration_resend_activation_action', 'user_registration_resend_activation', 10 );

/**
 * Automatically resend any emails to users who haven't activated their account
 *
 * @link   https://wpforms.com/developers/how-to-automatically-resend-user-activation-link-emails/
 */

function user_registration_resend_activation_as_task() {

   if ( ! function_exists( 'as_schedule_recurring_action' ) ) {
      return null;
   }

   if ( as_next_scheduled_action( 'user_registration_resend_activation_action' ) ) {
      return null;
   }

   
   as_schedule_recurring_action( strtotime( 'midnight tonight' ), WEEK_IN_SECONDS, 'user_registration_resend_activation_action' );
}

add_action( 'admin_init', 'user_registration_resend_activation_as_task', 10 );

Qualquer utilizador que se tenha registado através do seu formulário mas ainda não tenha ativado a sua conta recebe o estado de wpforms-pending, pelo que a primeira função procurará esse estado para obter as contas desses utilizadores e a segunda função reenviará automaticamente os emails usando WEEK_IN_SECONDS como tempo agendado.

O WEEK_IN_SECONDS é uma constante do WordPress que pode usar para verificar semanalmente esta tarefa. Se desejar alterar isto para ser em breve (ou mesmo mais tarde), pode alterar esta parte da função para qualquer um dos seguintes.

  • MINUTO_EM_SEGUNDOS
  • HORA_EM_SEGUNDOS
  • DIA_EM_SEGUNDOS
  • MÊS_EM_SEGUNDOS
  • ANO_EM_SEGUNDOS

Para mais informações sobre as constantes que o WordPress fornece para períodos de tempo, consulte a sua própria documentação.

E é tudo o que precisa! Gostaria de criar algumas User Smart Tags para usar noutros formulários? Consulte o nosso tutorial sobre Como Criar Mais User Smart Tags.