mmbrs

Use shortcodes to restrict access to content based on roles, capabilities, user meta, and logged in status.

Author:Ben Wills (profile at wordpress.org)
WordPress version required:3.3
WordPress version tested:4.0
Plugin version:1.0
Added to WordPress repository:02-10-2014
Last updated:02-10-2014
Warning! This plugin has not been updated in over 2 years. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.
Rating, %:100
Rated by:1
Plugin URI:http://compassionate.co/mmbrs
Total downloads:1 053
Active installs:10+
plugin download
Click to start download

The mmbrs plugin allows you to restrict content access using shortcodes.

Content may be restricted based on role, capability, user meta, and logged-in status.

What makes mmbrs different:

  • Restriction based on role, capability, user meta, and logged-in status is all in one place.
  • You are able to restrict content based on if a user is='not'. For example, Show this content if a user is not an administrator.
  • You can pass multiple variables to the roles and capabilities shortcodes. For example, Show this content to users who are subscribers, contributors, or editors.
  • By default, any content within these four shortcodes is not displayed in feeds. You may also set the showinfeed='yes' attribute to show the content in feeds.
  • It is as lean as I could get it, with logic ordering to cut down on processing. Which isn't saying much, but if you've got suggestions, I'm open to hearing them.

The four mmbrs shortcodes are:

  • [mmbrs_logged_in]
  • [mmbrs_roles]
  • [mmbrs_capabilities]
  • [mmbrs_user_meta]

[mmbrs_logged_in]

[mmbrs_logged_in]Content.[/mmbrs_logged_in]

  • Attribute: none
    • Shows content to logged in users.

[mmbrs_logged_in is='not']Content.[/mmbrs_logged_in]

  • Attribute: is
    • Optional.
    • is only accepts not.
    • Shows content to logged out users.
    • Case insensitive.

[mmbrs_logged_in showinfeed='yes']Content.[/mmbrs_logged_in]

  • Attribute: showinfeed
    • Optional.
    • showinfeed only accepts yes.
    • Shows content in the feed and ignores all other attributes when displaying in the feed. (If it is not being displayed in a feed, all of the attributes take effect.)
    • Case insensitive.

[mmbrs_roles]

[mmbrs_roles]Content.[/mmbrs_roles]

  • Attribute: none
    • Returns nothing.

[mmbrs_roles equals='subscriber']Content.[/mmbrs_roles]

  • Attribute: equals
    • Required.
    • Accepts multiple. e.g. equals='subscriber,contributor'
    • Shows content to users with the 'subscriber' role.
    • Case sensitive.

[mmbrs_roles is='not' equals='subscriber']Content.[/mmbrs_roles]

  • Attribute: is
    • Optional.
    • Shows content to users who do not have the 'subscriber' role.
    • is only accepts not.
    • Case insensitive.

[mmbrs_roles showinfeed='yes']Content.[/mmbrs_roles]

  • Attribute: showinfeed
    • Optional.
    • Shows content in the feed and ignores all other attributes when displaying in the feed. (If it is not being displayed in a feed, all of the attributes take effect.)
    • showinfeed only accepts yes.
    • Case insensitive.

[mmbrs_capabilities]

[mmbrs_capabilities]Content.[/mmbrs_capabilities]

  • Attribute: none
    • Returns nothing.

[mmbrs_capabilities can='delete_others_posts']Content.[/mmbrs_capabilities]

  • Attribute: can
    • Required.
    • Shows content to users with the 'delete_others_posts' capability.
    • Accepts multiple. e.g. can='delete_others_posts,edit_others_posts'
    • Case sensitive.

[mmbrs_capabilities is='not' can='delete_others_posts']Content.[/mmbrs_capabilities]

  • Attribute: is
    • Optional.
    • Shows content to users who do not have the 'delete_others_posts' capability.
    • is only accepts not.
    • Case insensitive.

[mmbrs_capabilities showinfeed='yes']Content.[/mmbrs_capabilities]

  • Attribute: showinfeed
    • Optional.
    • Shows content in the feed and ignores all other attributes when displaying in the feed. (If it is not being displayed in a feed, all of the attributes take effect.)
    • showinfeed only accepts yes.
    • Case insensitive.

[mmbrs_user_meta]

[mmbrs_user_meta]Content.[/mmbrs_user_meta]

  • Attribute: none
    • Returns nothing.

[mmbrs_user_meta key='first_name'][/mmbrs_user_meta]

  • Attribute: key (with no content)
    • Required. (key attribute is required. Content is not required.)
    • Shows a logged-in user's first_name meta value.
    • Does NOT accept multiple values when content is null/empty.
    • Case sensitive.

[mmbrs_user_meta key='first_name']Content.[/mmbrs_user_meta]

  • Attribute: key (with content)
    • Required. (key attribute is required. Content is not required.)
    • Shows content to logged-in user with the first_name meta value.
    • Accepts multiple as OR. e.g. key='first_name,last_name'
    • Case sensitive.

[mmbrs_user_meta is='not' key='first_name']Content.[/mmbrs_user_meta]

  • Attribute: is
    • Optional.
    • Shows content to users who do not have the first_name meta value.
    • is only accepts not.
    • Case insensitive.

[mmbrs_user_meta is='not' key='first_name' equals='Ben']Content.[/mmbrs_user_meta]

  • Attribute: equals
    • Required.
    • Shows content to users who do not have the first_name user meta of 'Ben'.
    • Case sensitive.

[mmbrs_user_meta showinfeed='yes']Content.[/mmbrs_user_meta]

  • Attribute: showinfeed
    • Optional.
    • Shows content in the feed and ignores all other attributes when displaying in the feed. (If it is not being displayed in a feed, all of the attributes take effect.)
    • showinfeed only accepts 'yes'.
    • Case insensitive.

Other Notes:

For every shortcode, except [mmbrs_logged_in], if a user is not logged in, the shortcode will return nothing. The exception is when using is='not' in [mmbrs_logged_in], as in [mmbrs_logged_in is='not']Content.[/mmbrs_logged_in]

By default, everything is hidden from feeds unless showinfeed='yes' is defined.

Motivation for this plugin:

I wrote this plugin to fill some holes, reduce some unnecessary functions, and fix some minor bugs I found in other plugins. I now use this, and only this, to control all shortcode-based content access on my membership-style websites.

The Members plugin checks roles by checking capabilities. You are not supposed to do that. The proper way of checking roles is included here. Notes on this:

Aside from that, I love and use the Members plugin and suggest you check it out for other role- and capability-based content access management.

I removed a bunch of stuff from the User Meta Shortcodes plugin that I didn't want. If you want the additional functionality, I recommend that plugin.

In the end, I wanted very clear control of in-post content via shortcodes. I wasn't finding anything that was totally stripped down. So I wrote this.

Inspiration and Credits:

 


FAQ
ChangeLog