This plugin hasn’t been tested with the latest 3 major releases of WordPress. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.

F1 Register Flow


Register Flow gives a simple solution to custom registration form needs. Rather than having you learn to use a new form designer, shortcodes are provided to turn your custom pages into registration steps. Action and filter hooks are then used to let plugin users tweak the registration process as needed. This is intentionally a developer focused solution to allow full control of the process.

The registration process has 3 steps:

  • Step 1 is where users could enter a username and validate there it is valid. You can implement custom validation to modify this step.
  • Step 2 would be the rest of the information (password, phone, etc). Once they complete this step an email will be sent enabling them to complete the process. You can implement custom validation here as well.
  • Confirmation step is called when the user clicks on the link in their email (up until that point they have not actually been created as a WordPress user). You can implement custom validation as well as custom logic to be run when the user has been created (good place to save some additional user data).

All these steps are controlled via custom pages, action hooks and filters – see the FAQ section for more details.


  1. Upload the files to wp-content/plugins/f1-register-flow or use the automatic installer
    1. Activate the plugin
    2. Look at instructions on the FAQ section to learn how to define your registration flow


How do I define the registration form?

2 shortcodes are available for use in the site’s pages:

  • f1-registration-form-step1
  • f1-registration-form-step2

They should wrap the form’s content. Form’s control names should be prefixed with “registration_”.

Any field included in the “step1” form will be passed to the “step2” page via the query string. At a minimum the step2 form must have the following fields (these can either be present on the form itself, or generated via the registration_step2_validate action):

  • registration_first
  • registration_last
  • registration_email
  • registration_login
  • registration_password
  • registration_password_confirm

The default page names are:

  • register – initial registration form. This must contain the registration-form-step1 shortcode.
  • register-complete – step 2 of the registration. This must contain the registration-form-step2 shortcode.
  • register-checkemail – page shown when step 2 completes. Should have a message to the effect of “Please check your email”

You can select other pages on the plugin settings page.

How do I edit email templates?

Templates are simply custom WP pages with pre-determined names. Variables surrounded by {{ }} will be expanded. There is only 1 email template at this time:

  • Registration Confirmation Request: The system will look for a page named registration-confirmation-request-template and expand the following variables:
    • registration_confirmation_url – URL to be used for confirming the registration
    • variables provided on the registration form (e.g. registration_login, registration_password, etc)

How do I customize the validation steps?

Use the following WordPress filter hooks:

  • f1_registration_step1_validate($form_data, $errors): This will be passed the form data. If the validation fails errors should be added to the $errors parameter. $form_data (modified or not) must be returned.

  • f1_registration_step2_validate($form_data, $errors): This will be passed the form data. If the validation fails errors should be added to the $errors parameter. $form_data (modified or not) must be returned.

  • f1_registration_confirmation_request_email($email, $form_data): This can be used to modify the email used for the confirmation request. By default the system will use the provided registration_email.

  • f1_registration_confirmation_validate($form_data, $errors): This will be passed the form data. It fires right before the user is created. If the validation fails errors should be added to the $errors parameter. $form_data (modified or not) must be returned.

How do I save additional user data for the user?

Use the following action hook:

  • f1_registration_confirmed($user_id, $form_data): Invoked when the user confirms his registration, by clicking the link in the email. The original form data gets passed. This is where additional metadata could be added to the user, or a thank you email could be sent.

How do I show a confirmation page to the user (or other post-confirmation actions)?

By default, once the user has passed the confirmation step, they will be redirected to the site’s home page. To customize this, use the following action hook:

  • f1_registration_loggedin($user_id): Invoked when the user has confirmed registration, and after they have already been marked as logged in.

Contributors & Developers

“F1 Register Flow” is open source software. The following people have contributed to this plugin.

Translate “F1 Register Flow” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



Initial release


Add configuration options for registration pages


Add example configuration (