Product Support

Participant Login

Provides username/password access to edit a Participants Database record.

Product Setup

To configure the plugin for use, start by making sure your “Participant Record Page” is correctly configured by visiting the “Record Form” tab in the main Participants Database settings. This tells the login form which page to go to when the login is accepted.

Setting up the Participant Record Page

Configure the Login Form

On the Participant Login settings page, you can configure the form to show one or two fields that the user will need to fill in to access their editable record. The first field is called the “Username” field, and it is used as the primary identifier. This can be an email address, an ID number of some kind, or really anything that can be used to uniquely identify the user.

The second field is called the “Password” field, but it can also be anything you want. It is usually used to verify the user, especially if the Username field is something that would be generally known, such as an email address. It is also possible to set up the form to use only a single input field by unchecking the “Require Password” checkbox. When this is unchecked, only the Username field will be shown in the form. You might do this if your username field was something only the user would know, such as an ID number.

When selecting the field to use for the password field, it is important understand that “password” type fields store the password in encrypted form, which means an administrator cannot know what the password is. If you need to be able to tell people what their password is, use a text-line field for your password field, then you will be able to look up their password because it will be stored in plaintext.

Create Your Login Page

Once you have configured the login form, you should create a page that will be the login page. On that page, place the [pdb_login] shortcode to show the login form. It is possible to use a custom template for the login form if you need.

This shortcode will accept the following attributes to configure how it looks and works:

  • template for using a custom template
  • record_page to set the page (use the page name or ID) that the user goes to after successfully logging in; that page must have the [pdb_record] shortcode.
  • login_button_text to set the text on the submit button for the login form

Persistent Login

When using the “Extended Access” preference, the user is automatically forwarded to the record edit page from the login page for 24 hours after successfully logging in. This period can be changed using a code filter.


To end the persistent login before it expires, you can use a logout link. You may need to use this if you have users that must have access to more than one record. The logout URL is simply the login URL with “?pdb-logout” appended to it. For example, if your Participants Database login page is at /pdb-login, your logout link would look like this:


If you are not using pretty permalinks, you need to do it slightly differently. For example, if your login page is on a page with an ID of 2034, your logout link would look like this:


Product Settings

Login Form Settings

Username Field

SelectsĀ the field that holds the username. This could be an email address, a made-up username, or even a member ID number.Ā If the password is not required, this will be the only field shown. This field should hold a value that uniquely identifies the record. If more than one record matches the value, the first record found will be used.

Username Not Found Feedback Message

Message to show if the username does not match any record.

Require Password

If this is checked, both the username and the password must match an existing record for the login to be accepted. If unchecked, no password will be required, and a correct entry into the username field will take the user to the record edit screen. Be careful with this, it could allow data to be changed by unauthorized persons.

Password Field

This is where you set the field that is used for your”password.” If “Encrypt Passwords” is set (this is the default) only “password” type fields can be selected here. If you deselect the encryption preference, you can use any text field here, but not password fields. If you set this field to “required” (on the Manage Database Fields page) the user will be forced to type in their password when they edit their record. If the field is set to “not required” it will still be required in the login form.

Use Encrypted Password

You have the option to save the passwords as encrypted or unencrypted. If the passwords are encrypted, nobody will be able to know what the actual password is. This is to keep them secure in case of a breach. If you are using encrypted passwords, only a “password” type field may be used as the password field. If this is deselected, you may us any “text” type field for your password field. This may be preferable in situations where keeping the password encrypted is not needed, or if you want to use a regular text field for your password field, such as a member ID or other identifying field value. When deselected, the passwords are stored in plaintext and so will be visible. This would allow an admin to tell a user what their password is, for instance. Important: when changing this setting, you must save the settings twice: once to change this setting, then again to save theĀ “password field” selection.

Login Button Text

This is where you can set the text that is shown on the login form submit button.

Bad Password Feedback Message

Message shown if the password doesn’t match the value in the database.

If checked, a cookie is stored on the user’s browser when they successfully log in, so tha when they are directed to the record edit page, the URL does not show the private ID of the record. This can also be used to allow the user to bypass the login for a while if the setting below is set.

Extended Access

This sets the cookie to stay valid for 24 hours, allowing them to bypass the login for that period of time. This requires the the “Use Cookie” setting be selected as well. When a user with such a cookie visits the Participant Login page, they will be immediately redirected to their record edit screen. The 24-hour period can be changed to another value by using a code filter.

Password Recovery Settings

Provides a way to send the direct link to the user’s record so their password can be changed or recovered. This requires the the “Resend Private Link” functionality in Participants Database be correctly configured. This does not send the password or set a new password, it functions in the normal way for Participants Database: it provides the recipient with a private link to edit their record. They may use that link to change their password if they wish.

Lost Password Form Shortcode

This shortcode is used to generate the lost password form. This setting allows you to customize the shortcode, primarily so that a custom template may be used. the default value here isĀ 

Request your Private Link


Password recovery works by emailingĀ the user a “private link” which can be used to access their record edit page, bypassing the login form. When checked, this setting will change the private ID every time it is used to access the record edit page. This keeps the private link secure because it can only be used once. Don’t use this if your users need to be able to use a static URL to access their record edit page.Ā This setting has the effect of changing the private ID code every time the record is saved.


How does the "brute-force" protection work?

Every time the form is tried, the attempt is recorded with a timestamp and and the user’s IP. If there are over 10 attempts in a hour from a single IP, that IP is not allowed any more attempts for an hour.

Can I change the number of login attempts are allowed before the IP is shut out?

Yes, it quires the use of a filter callback. The number of attempts allowed is filtered by ‘pdb-login_max_attempts’ and defaults to 10. The time within which this number of attempts is allowed is filtered by ‘pdb-login_attempt_timeframe’ and defaults to 1 hour in seconds, or 3600.

What if someone loses or forgets their password?

The plugin uses the “Resend Private Link” function that Participants Database uses. There is a setting to include the link in the login form. If someone doesn’t know their password, when they click the link and enter their identifying information (usually an email) a “private link” is sent to them that they can use to access their record. They can change their password at that time if they wish.

Is there any way to find out what someone's password is?

If you are using encrypted passwords, there is no way to know what the password is. In that case, the user must set a new password. If you are using plaintext passwords, then yes, no problem, the password will be visible to an administrator. The password will also be visible to the user when they edit their record.

How secure is the login form?

The login form provides a reasonable amount of security for non-critical applications. While security is very important to the design and operation of Participants Database, the plugin is not recommended for storing high-value information such as credit card numbers, social security numbers, passwords, etc.

The level of security when using this plugin is largely determined by it’s configuration by the administrator. Security is always a trade-off between convenience and how hard it is to break in. If you opt for convenience, it will be at the expense of security, that’s just how it works.

This plugin is designed to be useful in low-security situations where things link single-field logins and plaintext passwords are desirable. The security can be enhanced by using encrypted strong passwords, and hard-to-guess usernames that are not publicly viewable.

How can I prevent the private ID from being seen in the URL after they log in?

In the Participant Login settings enable theĀ “Use Cookie” setting. Now, when someone uses the login form, they will be directed to the record edit form without any indication of the record ID or private ID in the URL.

Is it possible to direct the user to a different page depending on a value in their record?

Yes, there is a filter that is used to get the URL of the page the user goes to after they successfully log in. The filter is ‘pdb-login_after_validate_submission’ and it passes in the user’s record and whether it was validated or not. (This means this can also be used to change where they go if the login wasn’t valid.)

I have created a simple plugin that demonstrates how this can be done:

Redirect PDB Login

You can download this demo plugin and make the changes needed to work for your situation.

How can I add a CAPTCHA to the login form?

It is possible to add reCAPTCHA protection to the login form if you have the PDb reCAPTCHA add-on installed and working. You need to use a custom template, I have provided an example of the template you can use for this.


You will need to understand a bit about how custom templates are set up, ready this article for the details:

Using Participants Database Custom Templates

Once you have the template in the correct location, you can use that template in the login form with this shortcode:

Support Discussions for Participant Login

  • Okay,
    Here’s one I’ve not seen asked.
    How do I move the few users I have in the WP default DB into the PDB database.

    • There is no direct pipeline, so how this gets done really depends on your resources and how big a job it is.

      If you don’t mind fiddling with spreadsheets it is (in theory, never tried it) possible to export your users as an XML (you need to install a plugin that gives you this ability) then import that in to Google Sheets using importXML. In the spreadsheet, you rename the column headers to match your field names in Participants Database, make sure the data is in the correct format, then export the CSV, which you would then import to Participants Database. Great if you don’t have a lot of coding chops, but you’ll need to be good with spreadsheets.

      If you’ve got some php skills, you can write a script that transfers the data. This would be somewhat complex, but faster.

      Or, of course manually…open two tabs: one for the user’s data and one for adding a new PDB record. Copy and paste between the two tabs.

      • Thank you.
        Copying looks like the way to go given I don’t have that many users in my db.

  • Okay,
    so I have all the fields appearing on the signup/registration form, but the login form looks the same. So how do I separate the fields I want to appear on the registration form from the login form. The short code looks to be the same for both.

    • The login form is displayed using the [pdb_login] shortcode, and the configuration for what fields appear in that form are under the “Participant Login” item in the Participants Database admin menu. Take a close look at the documentation for the Participant Login add-on to get a better understanding of how it works and how to use it.

  • I have looked every place for this.
    Where/How do I edit the signup form. I need to add fields.
    Or should I just build a custom template?

    • Never mind. After typing this, I found it.
      Thanks for the great plug in, but better docs would be helpful.

      • Glad you found it, docs can always be improved. Can you tell me where you looked that you would have expected to see this info so I can make it more clear? Thanks!

        • I read the topic about the the signup checkbox in the manage fields settings to get the fields to appear on the form.

  • When requesting private link to restore password, I cant get the private link thats mailed opened.


    the link looks like

    • That is not the usual URL that would be generated by WP to reach a page, do you have some kind of plugin that alters the page URL?

      If you are not using permalinks (perhaps you should!) the usual URL for a page would be something like:

      so something is changing the default URL that WP uses.

  • Hi Roland

    I would like to suggest a small improvement for your participant-login plugin.

    In my setup I have enabled “Require Password”, “Use Cookies”, “Extended Access” and “One-Time-Use Private Link”.

    I have made a login-status widget that checks for the persistence cookie and displays a users login-status accordingly. A logged-in user can click on a link in the widget to access his/her private page. The link is generated using the private ID stored in the persistence cookie.

    Now, if the logged-in user goes to his/her private page and changes his/her password, a new private ID is generated, but the cookie is not updated with the new private ID.
    The contents of the cookie and thereby my generated link to the users private page gets invalid and the user will have to log in again.
    Similar behavior for the pdb_login shortcode – the user will have to login again after password is updated.

    I don’t know if this is the intended behavior, but I think it would be nice if updating of the cookie was working out of the box.


    • Thanks for the feedback, I appreciate hearing ways in which the plugin can be improved. I think it would be a simple thing to implement, but I will have to consider the security implications.

  • salve e possibile inserire un re indirizzamento su delle pagine personali per ogni utente dopo il login?

  • Hi Roland. I would like the users to upload a photo, and then be able to see that photo on the user record page. Right now on this page I can see the form to upload it again, but the photo is not displayed. I’d like to find a way to just output the photo that the participant uploaded. Is there a way to do this? Thanks.

    • The built-in image upload field doesn’t provide an instant preview. If you need an instant preview, you can get the Image Expansion Kit add-on, then use a “multi-upload-image” field, which uploads the image without having to submit the form, and instantly shows a preview of the image. You can set that field to only accept a single image if that’s what you want.

      • I’m not sure I need an instant preview. I just need the user to log-in to the “user page”, which would display the image they uploaded along with the name, address and other data they filled in the register form. I’ll gladly purchase the extension if this is possible to achieve.

        • You won’t need any add-ons to get what you just described. This is a standard feature of the plugin. You just need to set up the “single record page.” Usually, this would be linked to from a list of records. Take a look at the “Setup Guide” in the plugin admin menu, it will explain how to set up the single record page.

  • i want to use a password for the database login
    i created a field, put it on the personal page – “password”
    set the field to be on the signup form
    yet, when i go to choose a field for the password, there is only a limited number of fields that show up.
    the password field in not the list.

    • it finally showed up in the list

      • i am not sure where i am to put the logout information
        i chose to edit the page, and put in in the url.
        I don’t see anywhere that says to logout.
        is this automatic?

        • The logout is just a link (URL) that you can put anywhere you want to provide a logout link.

  • Hello, I’ve just bought your plugin and I’m applying to my website.

    I’d like to set multiple records for a single id (or username) and set a “personal page” where the users can edit their records. Even if this plugin can’t records multiple entries per users without use WP User log in, I think I could show the list filtering only the active user’s entries (logged in with Participant Login) that have the same “username” field even if the id is different.

    I followed your tutorial here and create the list, is there a way to filter only the “active user”?


    • You can filter what is shown based on the logged-in user if they are a WordPress user. If you are using Participant Login, then the process is very different.

      When someone used Participant Login, the only thing that happens is that the [pdb_record] shortcode knows the ID of the record to show. So, to show additional content based on that information, you need to build it into the template for the pdb_record shortcode. You will need to have some php skills to get this done.

      First, reference this article: Using Participants Database Custom Templates

      Look at the template for the pdb_record shortcode, you’ll see where it determines if it has the record id, your code should go inside that. You can put your list shortcode in the template, either before or after the form that the template normally shows.

      For example, if your records are linked through a field named “owned_by” you can set up a filter that will list only those records that match the ID of the main record:

      participant_id . '"]' ) ?>

  • no new plugins
    The password is simply not accepted anymore. I’ll go back in admin & add it again and it works again.

    I have 100 users and it seems to be happening daily. No pattern.

    I am using a username that is common with several users though.
    Will make sure all users have a different username to see if that makes any difference.

Got a Support Question?

You have to agree to the comment policy.

Would you like to be notified of followup comments via e-mail? You can also subscribe without commenting.