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:
== Installation ==
- Upload plugin-name.php to the /wp-content/plugins/ directory
- Activate the plugin through the 'Plugins' menu in WordPress