MinnPost / minnpost-wordpress

MinnPost.com in WordPress
GNU General Public License v2.0
2 stars 0 forks source link

Make membership administration somewhat usable #52

Closed jonathanstegall closed 6 years ago

jonathanstegall commented 6 years ago

This is related to:

Notes

Places in code that use our member levels in a hardcoded way:

jonathanstegall commented 6 years ago

Possible ways of structuring this:

One big membership plugin

  1. Make a folder level Membership plugin
  2. Deal with settings
    • Store main settings - member levels, amounts, names, frequencies - in a separate database table because they would get used by so many different plugins and it'd be nice to not have to repeat the settings everywhere
  3. Content it would have to handle by itself, eventually
    • Partner offers (front end and back end admin)
    • Fan club (front end and back end admin)
    • Other benefits people might redeem on site or that we might distribute on site)
    • Support pages (default, benefit structured, plus explanatory pages for partner offers/fan club stuff)
  4. Things it would probably need to facilitate via hooks or whatever
    • Blocked content template, so it could show users what they can do to see the blocked content, based on their current logged in/membership status (i.e. they can log in if they aren't, if they are but they're not eligible they can join or upgrade support level)
    • Sending users to update their payment info/switch payment methods
    • Donation history/tax statements
    • Upcoming pledges and scheduled payments
    • donor recognition (this would probably be widgets, I imagine)
    • on-site notifications to users
    • Member drives/communication on site with users

A bunch of small plugins - maybe still under a big membership folder-level heading in admin

  1. One for all financial stuff - main support pages, update payment method, see active donations, etc.
  2. One for benefits - explaining them and redeeming them
  3. still probably would need something with over arching settings like member levels, frequencies, amounts
  4. One for member drives
jonathanstegall commented 6 years ago

Stuff that makes this all complicated:

jonathanstegall commented 6 years ago

Well, putting a plugin for this stuff in this repo: https://github.com/MinnPost/minnpost-membership

jonathanstegall commented 6 years ago

Pages this thing has to cover (at least):

  1. https://www.minnpost.com/support/
  2. https://www.minnpost.com/support/member-benefits
  3. https://www.minnpost.com/support/member-benefit-details
  4. https://www.minnpost.com/support/fan-club
  5. https://www.minnpost.com/support/partner-offers

1 and 2 are related to #4.

Also:

The message that shows when a user tries to read a post their membership does not allow (which is the entirety of #49) ✅

jonathanstegall commented 6 years ago

Dealing with the first two line items above solves #4.

jonathanstegall commented 6 years ago

To finish this, it does seem like we'll also have to create content types for partners, partner offers, partner offer instances.

jonathanstegall commented 6 years ago

This is certainly related to #55 because we will need to allow this plugin to tell the popups whether users are eligible for fan club/partner offer benefits. That is not a usermeta field.

jonathanstegall commented 6 years ago

This is a useful piece on custom post types that are children of other custom post types. http://typecode.digital/wordpress-custom-post-types-and-parent-child-relationships/

jonathanstegall commented 6 years ago

Possible displays:

Before or after offers are claimable

During claimable times

No user action has happened

No instances are available

User is eligible

User is not eligible based on member status

User is not eligible based on a previous claim

User has claimed an offer in this period

User has tried to claim

No instances are available

Successful claim

User is not eligible based on member status

User is not eligible based on when they last claimed