Plugin Directory


Groups is an efficient and powerful solution, providing group-based user membership management, group-based capabilities and content access control.


  • Adjusted the Groups and Capabilities screens' UI elements.
  • Reduced the filters section footprint on the Groups screen.
  • Reduced the filters section footprint on the Capabilities screen.
  • Fixed use of deprecated constructor in the Groups_Pagination class.
  • Fixed sorting by description and the sorting indicator on the Groups screen.
  • Fixed sorting by description and the sorting indicator on the Capabilities screen.
  • Fixed some code formatting issues including superfluous whitespace.
  • Improved the footer rendering and footprint.


  • WordPress 4.4 compatible.
  • Updated selectize.js to 0.12.1 (standalone).
  • Fixed a representation issue for the lower group selector on the Users screen.
  • Updated the page headings to use h1 instead of h2.
  • Added the is_member method to Groups_User.
  • Updated the footer.


  • Added own cache encapsulation to guard against flaws in outdated cache implementations.
  • Added new user group property to obtain hierarchical groups.
  • Improved user properties to use own caching.
  • Fixed media field filters wrongly declared as actions.
  • Fixed the version comparison operation.


  • Fixed potential XSS vulnerabilities related to the unescaped use of the $_SERVER['REQUEST_URI'] in some forms.


  • WordPress 4.3.1 compatibility tested.
  • Add-ons section added.


  • WordPress 4.3 compatibility tested.
  • Updated the menu position constant (string instead of number).
  • Removed translation of the Groups menu title (related to a consistent appearance and would also be affected by a a core bug).
  • Fixed padding for the header checkbox on the Groups and Capabilities screens.


  • Fixes an issue with map_meta_cap filtering where no valid post ID is provided.


  • Added the French translation.
  • Added the [groups_login] shortcode.
  • Added the [groups_logout] shortcode.
  • Updated the German translation.
  • Updated the Spanish translation.
  • Added the groups_deleted_capability_capability action.
  • Fixed an issue with deleted capabilities restricting access to posts.
  • Fixed cache entries for capabilities.


  • Added the German translation.
  • Updated the Spanish translation.
  • Updated the Groups menu position.
  • Removed empty strings from translation.


  • Added administrative links to the plugin entry.


  • Added the Dutch translation.


  • Added a comparison method for groups and capabilities.
  • Updated the documentation link in the help content.


  • Improved internal definitions to use API function instead of WP_CONTENT_DIR and WP_CONTENT_URL constants.
  • Now showing inherited capabilities for groups.
  • Added ABSPATH check to plugin main file.
  • Improved the UI rendering cancel links as buttons.
  • Improved the UI adding some space on capability selector box.
  • Fixed a pagination issue when the page number is indicated on the Groups or Capabilities screen.


  • Please MAKE A BACKUP of your site and database PRIOR to updating.
  • WordPress 4.2 compatible.
  • Adopted a more flexible index size on the capability row of the capability table.


  • Please MAKE A BACKUP of your site and database PRIOR to updating.
  • WordPress 4.2 compatible.
  • Reduced the index size on the capability row of the capability table.


  • Due to changes in versions 1.4.14 and 1.4.15, it's important to MAKE A BACKUP of the site & database, test the site, extensions & theme PRIOR to updating.
  • Fixes a cache incompatibility with caching mechanisms that do not implement wp_cache_get()'s function signature fully. This addresses cases specifically where the fourth parameter $found is not initialized as expected upon return. The performance improvements included in this release are lessened with caching plugins that fail to implement the return value disambiguation via $found.


  • Now not using Groups' the_posts filter by default as results are already filtered by Groups' posts_where filter.
  • Added the groups_filter_the_posts filter which can be used to 'reactivate' Groups' the_posts filter where needed.
  • Added caching for capabilities read by capability name.
  • Added caching for groups read by name.
  • Added caching for results obtained in Groups_Post_Access::user_can_read_post(...).
  • Added the groups_post_access_user_can_read_post filter.
  • Admin override is disabled by default (existing installs need to disable manually if options were saved).
  • Swedish translation by Andréas Lundgren added.


  • WordPress 4.1 compatible.


  • Fixes missing selectize Javascript for the media uploader's attachment popup.


  • WordPress 4.0 compatible.


  • Improved: code documentation
  • WordPress 3.9 compatibility checked
  • Changed some filter usage with prepare() for 3.9 nags.
  • Fixed unmatched tags in the tree view.


  • Fixed: Tree view doesn't appear/disappear in menu directly after setting the option.
  • Improved: Feedback when options have been saved.
  • Improved: UI size adjustments.
  • Added: New API methods Groups_Group::get_group_ids() and Groups_Group::get_groups().
  • Improved: groups and capabilities table cell titles and ellipsis added.


  • Fixed: A closing tag in the group list on the user profile.
  • Fixed: Help wording.
  • Improved: Capabilities in the Access Restrictions column are sorted for more consistent display.
  • Improved: Reduced ID, Edit and Remove column widths on Groups and Capabilities screens.
  • Fixed: Stripping added slashes from groups and capabilities displayed.
  • Added: Feedback when groups and capabilities are created, updated or removed in admin.
  • Added: group and exclude_group attributes for the [groups_user_groups] shortcode.
  • Improved: Replaced remnant CR LF line-endings in code.
  • Fixed: Handling updates to a capability when the capability field is empty.
  • Fixed: Handling updates to a group when the name field is empty.
  • Fixed: Don't allow to use the name of another existing group when updating a group.
  • Fixed: Don't allow to use the name of another existing capability when updating one.


  • Security improvement: plugin files accessed directly exit

  • Fixed: Don't interfere with output when there is no post (the_content and get_the_excerpt filters)


  • Security fix : Certain capabilities could be granted to users instead of being denied with a change introduced in version 1.4.5. Roles with negated capabilities would effectively grant these capabilities to the user.


  • Using a WordPress API function get_post_type_capabilities() instead of semi-hardcoded capabilities for access restriction checks (affects CPTs).
  • Changed: Taking role-based capabilities into account when creating cache entries for the Groups_User object. The new groups_user_add_role_capabilities filter allows to modify this new behaviour by returning false.
  • Added: groups_user_add_role_capabilities filter.


  • WordPress 3.8 compatibility checked.
  • Fixed: Access restriction options per post type when none is checked.


  • Added: Bulk editing (add/remove) of post access restriction capabilities.
  • Fixed: A typo in the Access Restriction column's tooltip text.
  • Fixed: Validation of access restriction capabilities when saved on options admin screen.
  • Changed: Users must now have the groups_access capability to be able to use the access restriction meta box on posts.


  • Added: Access restriction capabilities shown for enabled post types on overview screens.
  • WordPress 3.7.1 compatibility checked.
  • Fixed: Error caused by typo when obtaining group_ids_deep property for a Groups_User.
  • Changed: Replaced some __get calls by properties.
  • Added: Filter by access restriction capabilities for enabled post types on overview screens.


  • Added: Better group-assignment on the Users admin screen, allows to assign/remove multiple users to/from multiple groups along with a better UI.
  • Changed: Groups requires at least WordPress 3.5 now, although this only affects the group-action functionality on the Users admin screen, the restrict_manage_users action which is now used to render the UI elements needed, was introduced with WordPress 3.5.
  • Added: Extensions box in Options.
  • Improved: Groups section in user profile with added description.


  • Added: Groups > Groups > Add / Edit group screens, allow to assign/modify the capabilities assigned to the group.
  • Added: Groups > Groups screen, allow to assign/remove multiple capabilities to multiple groups.
  • Added: Groups > Groups screen, allow to delete multiple groups as a bulk action.
  • Added: Groups > Capabilities screen, allow to delete multiple capabilities as a bulk action.
  • Improved: Groups > Options screen, using searchable select instead of checkboxes to enable capabilities for access restriction.
  • Improved: In user profiles, using a searchable select to modify group assignments.
  • Improved: Reduced the footer text in groups admin sections.
  • Improved: Admin CSS to make better use of screen real-estate and more coherent appearance with the new UI additions.


  • Added the option to quick-create group and capability within the access restriction meta-box.
  • Added the option to show groups granting access per capability in the access restriction meta-box.
  • Added the quick-create field to the access restrictions meta-box which allows to create group & capability on the fly.
  • Added Selectize.js and using it in the access restrictions meta-box instead of checkboxes.
  • Improved the Groups > Options screen using a Selectize-based selection of capabilities that are enabled for access restriction.


  • Fixed duplicate postmeta created when saving access restriction capabilities for a post.
  • [groups_can] and [groups_can_not] now accept multiple capabilities separated by comma.
  • WordPress 3.6.1 compatibility checked.


  • WordPress 3.6 compatibility checked.
  • Fixed table appearance for capabilities and groups admin sections when there are no results.


  • Fix: Access restriction capabilities must be disjunctive.
  • Added: List of groups can be shown in user profiles on the back end and group assignments can be edited by group admins.
  • Improvement: Groups shown for users on the Users screen are sorted by name.


  • Fix: Under certain conditions with caching involved, capabilities were not correctly retrieved. Thanks to Jason Kadlec who reported the issue.
  • Improvement: Related to the above fix, improved the way how *_deep properties are retrieved on cache misses, resulting in slightly better performance.
  • Fix: Added a missing text domain.
  • Improvement: Added help icon when user has no access restriction capabilities.
  • Fix: Redirecting after group action in users screen to end up with a clean admin URL.


  • Fix: added filter hooked on posts_where motivated by pagination issues - the posts must be filtered before the totals are calculated in WP_Query::get_posts().
  • Improvement: modified the signature of the the_posts filter method in Groups_Post_Access to receive the $query by reference
  • Improvement: a substantial improvement on overall performance is achieved by caching user capabilities and groups
  • Fix: access restriction boxes showing capabilities that the user should not be allowed to set to restrict posts
  • Fix: resolve user-capability when a capability is deleted


  • Fix: using substitute wp_cache_switch_to_blog instead of deprecated function wp_cache_reset when available (from 3.5.0)
  • Fix: don't show access restriction meta box on attachments, the option is added with the attachment fields (3.5 uses common post edit screen but save_post isn't triggered on attachments)
  • Improvement: limiting choice of access restrictions to those the current user has
  • Fix: restrict access to edit or delete posts based on the post's access restrictions
  • Feature: added option to refresh capabilities
  • Fix: replaced use of get_user_by() (memory leaks on large user sets) with query & added batch limit when adding users to Registered group on activation


  • Fix: missing argument for meta box when saving a post
  • Fix: Groups conflicting with other plugins adding columns to the Users screen (in the manage_users_custom_column filter) thanks to Erwin who spotted this :)


  • Replaced call to get_users() with query to avoid memory errors on activation with large users bases.
  • Provided a default value for a method in Groups_Access_Meta_Boxes to avoid issues with other plugins or themes.


  • Fixed out of memory issues with large user bases on Users > All Users page. Thanks to Jason Glaspey who spotted the issue :)


  • WP 3.5 cosmetics



  • Fixed capabilities cannot be added or removed from groups in localized installations


  • Added users property to Groups_Group
  • Moved tests out of core folder
  • Fixed missing $wpdb in Groups_Group's getter
  • Added group filters on users admin section


  • Added feature that allows to show access restrictions depending on post type
  • Added support for access restrictions on Media
  • Fixed issue, removed access restrictions offered on Links


  • Added Spanish translation


  • Minor improvements on Options screen
  • Added show="users" option to [groups_group_info] shortcode which lists user logins for users in a group - rather experimental as it doesn't offer any sorting, pagination, linking or other options


  • New shortcode [groups_join group="..."] lets a user join the given group
  • New shortcode [groups_leave group="..."] lets a user leave the given group


  • Revised styles
  • WordPress 3.4 compatibility
  • Dropping support for WordPress < 3.3
  • Help uncluttered.


  • Reduced files loaded on non-admin pages.
  • Added Lithuanian translation.
  • Changed help to use tabs.


  • Access control is no longer restricted to the groups_read_post capability: now any capability can be used to limit access to posts so that different groups can be granted access to different sets of posts.


  • Added shortcode & API functions [groups_user_group] / [groups_user_groups] that allows to show the list of groups the current user or a specific user belongs to
  • Added shortcode & API functions [groups_groups]to show the site's list of groups
  • Class comments.


  • Reduced plugin admin footer.


  • Added safety & warning to test page.


  • Tested on WP 3.3.2


  • Multisite: Fixed (removed) conditions that would only make Groups act on public and non-mature sites
  • Multisite: Adding add/remove to group only on sites', not network users admin screen
  • Multisite: Added constraint in user_register hook checking if the user is a member of the blog


  • Added Groups menu to network admin
  • Added option to delete plugin data for all sites on multisite installations; removed option for individual sites
  • Improved activation and deactivation for network installs
  • Increases column sizes on capabilities table and fixes cut-off capabilities delete_published_pages and delete_published_posts


  • Fixed issues caused by an excessively long index for the capability DB table. Some installations wouldn't work correctly, showing no capabilities and making it impossible to add new ones.
  • Taking into account blog charset/collation on newly created tables.


  • Groups shortcodes now allow nesting.


  • Fixed admin override option not being updated
  • DB tables checked individually to create (motivated by case of all but capability table not being created)


  • Groups wouldn't activate due to a fatal error on WP <= 3.2.1 : is_user_member_of_blog() is defined in ms-functions.php
  • Added [groups_group_info] shortcode


  • Increased length of capability.capability, capability.class, capability.object columns to support long capabilities.
  • Improved admin CSS.


  • This is the first public beta release.

Requires: 4.0 or higher
Compatible up to: 4.4.2
Last Updated: 2 weeks ago
Active Installs: 10,000+


4.6 out of 5 stars


6 of 20 support threads in the last two months have been marked resolved.

Got something to say? Need help?


Not enough data

0 people say it works.
0 people say it's broken.

100,1,1 67,3,2 100,1,1
100,2,2 100,1,1 100,1,1
100,1,1 100,2,2 100,1,1
100,5,5 100,1,1 100,3,3
100,1,1 100,1,1
100,1,1 100,1,1
50,2,1 100,1,1 100,1,1
100,1,1 100,1,1 100,1,1 67,3,2 100,3,3 100,1,1
100,2,2 100,1,1 100,1,1 100,1,1 100,3,3