Better Members List for Paid Memberships Pro

Plugin: A much more flexible Members List page for Paid Memberships Pro

For my entire professional career, I’ve railed against the “not invented here” attitude that seems common in software development. That “made” me create the “Better Members List for Paid Memberships Pro” plugin.

Did it make sense to spend my time developing this plugin..?

Probably not, but it was an interesting exercise in trying to build a fully compatible option to an existing capability.

Creating this plugin also helped me learn even more about the member management features of Paid Memberships Pro.

History of the Members List

Back in 2016, I rewrote the “Export to CSV” functionality for PMPro

That was my first time digging into the Members List functionality.

I suggested rewriting the Members List in PMPro at the time. My plan was to use the same approach as I have for the Better Members List plugin. Unfortunately, my proposal wasn’t accepted.

In the years since, I’ve submitted hundreds of updates to various parts of the PMPro plugin and the add-ons.

I also made multiple proposals to improve the user experience for the Members List.

Typically, my suggestions were based on requests I saw in the PMPro Support forums.

Users of Paid Memberships Pro wanted the capabilities I included in Better Members List for Paid Memberships Pro.

For a while, you’ve had to register on my site in order to download this free plugin.

I wanted to track the use of the plugin. I also feel that I could deliver a better support experience by knowing who’d downloaded it.

With the number of downloads I’ve seen, I decided to submit the plugin to the WordPress.org plugin repository.

It was accepted late last week.

Changes to Better Members List for Paid Memberships Pro

The plugin could always be updated using the standard WordPress one-click update method.

One problem was that it wasn’t possible to install it the same way.

WordPress.org accepting my plugin means you can now install it using the WordPress plugin dashboard.

I have included a few key features, so when you install it you can:

  • Select the columns to display (“Options” drop-down)
  • Define the number of members to list per page (“Options” drop-down)
  • Sort the list by clicking the column name:
    • user login,
    • email address,
    • membership level name,
    • start date, and
    • end/expiration date
  • Change one or more user’s Membership Level (bulk update)
  • Edit the start date of one or more user’s membership (bulk update)
  • Edit the end date of one or more user’s membership (bulk update)

Now using WP_List_Table

Unlike the built-in PMPro version of  the “Members List” functionality, the Better Members List for Paid Memberships Pro uses the WP_List_Table class

For that reason, decent WordPress programmers should be able to add new member list columns easily. 

Using the WP_List_Table data structure makes for a much more flexible programming environment.

A more flexible programming environment means it’s easier – cheaper(!) – to both maintain and extend the features of this plugin.

Why give it away?

I wanted to give users of Paid Memberships Pro a more powerful and flexible alternative.

I also have used this plugin to significantly extend the members list for customers of mine.

Because of my experiences with this plugin, I think of it as a gateway for others to extend, and I wanted to showcase my own development services.

Add Support Requests

Creating User Stories

You start this process by writing a specific user story. This story follows a very specific format:

As a [user role]

I want [feature]

so that [benefit]

In order to generate the required number of user stories to best describe your requested capability, you can add as many User Story Titles and Conditions of Acceptance as you need to by clicking on the + (plus) sign below the “Conditions of Acceptance” field on this form.

Examples of user stories can be:

  • As an author I want a spell checker so that I can avoid spelling errors in my documents
  • As a shopper I want a wishlist so that I can remind myself of things I’d like to buy in the future
  • As a salesperson I want a sales forecast report so that I can ensure I’m on track to hit my quota

Example of a User Story “Conditions of Acceptance” entry:

For the purposes of this example, we’ll use the example of the “spell checker” story (the first one of the user story title examples). The following list of conditions would need to be met for the benefits of the story title to be satisfied.

Example Conditions of Acceptance:

  • I can check spelling for my entire document
  • I can step through each spelling error one at a time
  • I can see suggestions
  • I can replace my word with a corrected word
  • I can add words to my dictionary
  • I can check spelling in English

User Stories

A user story is a description of a feature that is very lightweight, easy to understand, and quick to write. One of the key benefits is the ability to describe the vision of the project to the whole team, without spending weeks creating detailed requirements.
  • Please specify your email address to help us identify/locate your user stories. (PS: We will not add you to our email list when you use this service!)
  • User Story

  • Describe the role of the user who will benefit from this requirement

    Examples include:
    "paying member",
    "logged in user who is a paying member",
    etc

    "As a "...

  • Type the single requirement you want to resolve. Keep in mind that you can come back and add multiple user stories, so the more specific the description of each is, the less time we will spend going back and forth on what you meant - i.e. "a spell checker" vs "an editor" - .

    "I want to "...

  • Describe the benefit(s) - aka "Return On Investment" - you expect the requirement will provide. A benefit should be something specific/tangible the user role will receive from the resulting feature.

    "So that" ...

  • Conditions of Acceptance

  • What are the list of conditions that need to be met by the [user type] to realize the [benefits] of the [feature]?

    Create as long of a list of single-sentence conditions (see the above example) as you need to

  • +-
  • This field is for validation purposes and should be left unchanged.