WordPress registration through Gravity Forms

Place the following in your functions.php file to allow a site visitor to be registered by filling out a Gravity Form. This example not only registers them but automatically logs them into the site with their newly-generated credentials:

add_action('gform_after_submission', 'post_to_third_party', 10, 2);
function post_to_third_party($entry, $form) {
    if ($form['title'] != 'Registration') { return false; }
    $user_name = $entry[1];
    $user_email = $entry[2];
    $user_id = username_exists( $user_name );

    if ( !$user_id and email_exists($user_email) == false ) {
        $random_password = wp_generate_password( $length=12, $include_standard_special_chars=false );
        $user_id = wp_create_user( $user_name, $random_password, $user_email );
    } else {
        $random_password = __('User already exists. Password inherited.');
    }

    /** SEND A REGISTRATION EMAIL for subsequent logins */
    $to = $user_email;
    $subject = 'Virtual Open House :: New Signup';
    $message .= "";
    $message .= sprintf("Thanks for signing up.\n");
    $message .= sprintf("Your username is:\n");
    $message .= sprintf("\n%s\n\n",$user_name);
    $message .= sprintf("Your password is:\n");
    $message .= sprintf("\n%s\n\n",$random_password);
    $message .= sprintf("To login, please browse to: %s\n",get_bloginfo('url'));
    $message .= sprintf("Thank you\n");
    wp_mail( $to, $subject, $message);

    /** keep user logged in **/
    $creds = array();
    $creds['user_login'] = $user_name;
    $creds['user_password'] = $random_password;
    $creds['remember'] = true;
    $user = wp_signon( $creds, false );

  if ( is_wp_error($user) ) echo $user->get_error_message();
}

One thought on “WordPress registration through Gravity Forms”

Leave a Reply