概要
ユーザがまだアカウントをアクティベートしていない場合、自動的にアクティベートメールを再送したいと思いませんか?PHPでこれを行う方法を紹介します。WPFormsのUser Registrationアドオンを使えば、登録フォームにユーザー有効化メールを送信できるようにすることができます。小さなスニペットを使うことで、これらのユーザーに有効化リンクを再送する関数を簡単に設定することができます。
セットアップ
まず、フォームを設定し、ユーザー登録タブでユーザーアクティベーションを有効にする必要があります。 この設定にヘルプが必要な場合は、こちらのドキュメントをご覧ください。
フォームを設定し、フィールドを追加したら、フォーム設定の ユーザー登録タブをクリックします。 次に、ユーザーアクティベーションを有効にするオプションをクリックします。
次に、このスニペットをサイトに追加します。スニペットをサイトに追加する方法についてサポートが必要な場合は、こちらのチュートリアルをご覧ください。
/** * 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 );
最初の関数はそのステータスを探してユーザーアカウントを取得し、2番目の関数はWEEK_IN_SECONDSをスケジュール時間として自動的にメールを再送します。
WEEK_IN_SECONDSはWordPressの定数で、このタスクを毎週チェックするために使うことができます。もしこれをすぐに(あるいはそれ以降に)変更したい場合は、関数のこの部分を以下のいずれかに変更してください。
- 秒単位
- 時_秒
- DAY_IN_SECONDS
- 月_秒
- 年_秒
WordPressが提供する期間定数の詳細については、WordPressのドキュメントを参照してください。
必要なのはこれだけです!他のフォームで使用するユーザースマートタグを作成したいですか?チュートリアル「ユーザースマートタグをもっと作成する方法」をご覧ください。