¡Atención!

Este artículo contiene código PHP y está destinado a desarrolladores. Ofrecemos este código como cortesía, pero no proporcionamos soporte para personalizaciones de código o desarrollo de terceros.

Para obtener ayuda adicional, consulta el tutorial de WPBeginner sobre cómo añadir código personalizado.

Descartar

Cómo reenviar automáticamente los correos electrónicos de enlace de activación de usuario

Descripción general

¿Te gustaría reenviar automáticamente los correos electrónicos de activación de usuarios si estos aún no han activado sus cuentas? Te mostraremos cómo hacerlo con PHP. Con el complemento de registro de usuarios de WPForms, puedes habilitar el formulario de registro para que se envíen correos electrónicos de activación de usuarios. Usando un pequeño fragmento, puedes configurar fácilmente una función que reenvíe los enlaces de activación a estos usuarios; solo tienes que configurar la función y eso es todo lo que tienes que hacer.

Configuración

Primero, deberás configurar tu formulario y habilitar la activación de usuarios en la pestaña Registro de usuarios. Si necesitas ayuda para configurar esto, consulta esta documentación.

habilita la configuración de activación de usuarios desde la pestaña de registro de usuarios de la configuración del formulario.

Una vez que hayas configurado tu formulario y añadido tus campos, haz clic en la pestaña Registro de usuarios en la sección Ajustes del formulario. Luego, haz clic en la opción Habilitar activación de usuarios.

A continuación, añade este fragmento a tu sitio. Si necesitas ayuda para añadir fragmentos a tu sitio, consulta 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 );

A los usuarios que se hayan registrado a través de tu formulario pero que aún no hayan activado su cuenta se les asigna el estado wpforms-pending, por lo que la primera función buscará ese estado para obtener esas cuentas de usuario y la segunda función reenviará automáticamente los correos electrónicos utilizando WEEK_IN_SECONDS como tiempo programado.

WEEK_IN_SECONDS es una constante de WordPress que puedes usar para comprobar semanalmente esta tarea. Si deseas cambiar esto a pronto (o incluso más tarde), podrías cambiar esta parte de la función por cualquiera de las siguientes.

  • MINUTO_EN_SEGUNDOS
  • HORA_EN_SEGUNDOS
  • DIA_EN_SEGUNDOS
  • MES_EN_SEGUNDOS
  • AÑO_EN_SEGUNDOS

Para obtener más información sobre las constantes que WordPress proporciona para los períodos de tiempo, consulta su propia documentación.

¡Y eso es todo lo que necesitas! ¿Te gustaría crear algunas etiquetas inteligentes de usuario para usar en otros formularios? Consulta nuestro tutorial sobre Cómo crear más etiquetas inteligentes de usuario.