Groups

Groups is a WordPress plugin that provides group-based user membership management, group-based capabilities and content access control. It integrates standard WordPress capabilities and application-specific capabilities along with an extensive API.

Extensions

New Groups Restrict Categories and Groups Import Export.

  • Groups 404 Redirect allows to redirect visits to pages that are protected by Groups.
  • Groups Blog Protect restricts access to blogs based on group membership.
  • Groups File Access Groups File Access is an extension that allows to provide file download links for authorized users. Access to files is restricted to users by their group membership.
  • Groups Forums provides a powerful and yet light-weight forum system for WordPress sites.
  • Groups Gravity Forms allows to add users to groups automatically, based on form submissions.
  • Groups Import Export – An import and export extension for Groups.
  • Groups Jigoshop Groups integration for Jigoshop that supports memberships and subscriptions.
  • Groups Newsletters helps you to communicate efficiently, providing targeted information to groups of recipients through automated campaigns.
  • Groups Notifications allows to send automatic notifications to group members and the site administrator.
  • Groups PayPal – Sell memberships and subscriptions with Groups and PayPal.
  • Groups Restrict Categories features access restrictions for categories, tags and other WordPress taxonomies, including support for custom post types and taxonomies.
  • Groups Restrict Comments Pro This extension for Groups allows to restrict who can post or read comments based on a user’s group membership.
  • Groups Subscriptions is a subscription framework for Groups.
  • Groups WooCommerce Groups for WooCommerce is a WordPress plugin that allows you to sell memberships.
  • WooCommerce Group Coupons This extension for WooCommerce uses Groups and WordPress roles to limit the validity of coupons.
  • WooCommerce Groups Newsletters The WooCommerce Groups Newsletters extension lets customers subscribe to newsletters at checkout.

Features

User groups

  • Supports an unlimited number of groups
  • Provides a Registered group which is automatically maintained
  • Users can be assigned to any group
  • Users are added automatically to the Registered group

Groups hierarchy

  • Supports group hierarchies with capability inheritance

Group capabilities

  • Integrates standard WordPress capabilities which can be assigned to groups and users
  • Supports custom capabilities: allows to define new capabilities for usage in plugins and web applications
  • Users inherit capabilities of the groups they belong to
  • Groups inherit capabilities of their parent groups

Access control

  • Built-in access control that allows to restrict access to posts, pages and custom content types to specific groups and users only
  • control access to content by groups: shortcodes allow to control who can access content on posts, show parts to members of certain groups or to those who are not members Shortcodes: [groups_member], [groups_non_member]
  • control access to content by capabilities: show (or do not show) content to users who have certain capabilities Shortcodes: [groups_can], [groups_can_not]

Easy user interface

  • integrates nicely with the standard WordPress Users menu
  • provides an intuitive Groups menu
  • conceptually clean views showing the essentials
  • quick filters
  • bulk-actions where needed, for example apply capabilities to groups, bulk-add users to groups, bulk-remove users from groups

Sensible options

  • administrator overrides can be turned off
  • optional tree view for groups can be shown only when needed
  • provides its own set of permissions
  • cleans up after testing with a “delete all plugin data” option

Access Control

Groups defines some capabilities of its own. The groups_read_post capability is used to restrict access to certain posts or pages to groups (and users) with that capability only.

Framework

  • Solid and sound data-model with a complete API that allows developers to create group-oriented web applications and plugins

Multisite

  • All features are supported independently for each blog in multisite installations

Your opinion counts

You & Groups

Beta-testers and developers who need to integrate group-based features in their plugins and web applications: please use it and provide your feedback.

Feedback

Feedback is welcome!

If you need help, have problems, want to leave feedback or want to provide constructive criticism, please do so here at the Groups plugin page.

Please try to solve problems there before you rate this plugin or say it doesn’t work. There goes a lot of work into providing you with free quality plugins! Please appreciate that and help with your feedback. Thanks!

Twitter

Follow me on Twitter for updates on this and other plugins.

Introduction

Content Access Control

Access restrictions on posts

On posts an pages (and custom content types) a new meta box titles Access restrictions appears. By checking Enforce read access, you can restrict access to the post to groups and users who have the groups_read_post capability. You need to assign this capability to a group and make users members of that group to allow them to see those posts.

Content visibility for members and non-members

The [groups_member] and [groups_non_member] shortcodes are used to limit visibility of content to users who are members of a group or users who are not members of a group. Multiple comma-separated groups can be specified.

Example: Limiting visibility of enclosed content to registered users.

[groups_member group="Registered"]

Only registered users can see this text.

[/groups_member]

Content visibility based on capabilities

The [groups_can] and [groups_can_not] shortcodes limit visibility of enclosed content to those users who have the capability or those who do not have it. Multiple capabilities can be given.

Example: Showing enclosed content to users who can edit_posts (standard WordPress capability).

[groups_can capability=”edit_posts”]

You can see this only if you have the edit_posts capability.

[/groups_can]

Integration in the ‘Users’ menu:

Users – group membership is managed from the standard Users admin view. Users are automatically added to the Registered group. You can add multiple users to other groups here and also remove them.

Sections in the ‘Groups’ menu:

Groups

Here you can:

  • add groups
  • remove groups
  • assign capabilities to groups

Capabilities

This is where you add, remove and manage capabilities.

Capabilities can be assigned to groups and users (1). These capabilities include the standard WordPress capabilities but you can also define additional capabilities for your web-application.

Groups defines some capabilities of its own. The groups_read_post capability is used to restrict access to certain posts or pages to groups (and users) with that capability only.

(1) Assigning capabilities to users is not integrated in the user interface yet but can be done through API calls.

Options

Administrator override :

Administrator overrides can be turned off.

Permissions :

For each role these permissions can be set:

  • Access Groups: see information related to Groups.
  • Administer Groups: complete control over everything related to Groups.
  • Administer Groups plugin options: grants access to make changes on the Groups > Options admin section.

Testing the plugin :

A convenient option is provided to delete all data that has been stored by the Groups plugin. This option is useful if you just need to start from fresh after you have been testing the plugin.

Shortcodes

Please visit the documentation page on shortcodes for up-to-date information: Groups Shortcodes

Download

Download the Groups plugin on WordPress.

2,291 Responses to Groups

  1. Wilhelm August 16, 2018 at 4:40 pm #

    hi support.

    I like to know whether I am implementing the Shortcode correctly.

    I am setting a variable with get_template_part to recall the loop if the logged in user is part of the group.

    see the code below.

    The problem right now is that the loop is being recalled for all users and not just uses belonging to the group.

    • Kento August 22, 2018 at 7:50 am #

      Hi Wilhelm,

      The code was automatically removed from your comment – can you please provide it via a Gist?

      Cheers

  2. Giant August 22, 2018 at 12:38 pm #

    Hi

    I want to know whether users can create group and invite user in his group

    Regards

    • Kento August 22, 2018 at 5:31 pm #

      Hi,

      Thanks for asking, currently not but good to know there’s interest for group invites so I will take it into account for enhancements.

      Cheers

  3. René September 17, 2018 at 11:32 am #

    On the Group Options page, there seems to be a possibility to include nav_menu_item (ie. menu items). However, when checked, under Appearance > Menus > Menu …, there is no option to select specific groups that should see a menu item … Is this a bug, or simply wishful thinking? I hoped it would work like the ‘User Menus’ plugin, which allows for each menu item to select specific roles that should see that item – including custom links (see https://nl.wordpress.org/plugins/user-menus/)

    I am really having trouble finding a one-stop solution that enables me to show / hide any type of information on my site (ie. media, pages, posts, custom post types, widgets, menus) based on a specific group. The Groups plugin seems unable to limit access to menu items based on groups, the AAM plugin has a similar problem (based on roles). An alternative solution would be to skip groups, create user roles instead of groups, and use the Members plugin by ThemeHybrid to determine which content is shown to who. The ‘User Menus’ plugin could then be used to show or hide menu items. But I would prefer to keep groups and roles separate.

    Please let me know if you know a solution around this.

    • Kento September 19, 2018 at 7:30 pm #

      Hi René,

      For menu items that are directly related to a post type like those you choose from Appearance > Widgets under Posts or Pages, the items will be hidden if the entry is protected itself. If you use Custom Links, the menu items will appear always.

      It’s not related to the Navigation Menu Item / nav_menu_item you see under Groups > Options, at least not yet, although this is something I’d like to have added to Groups.

      I hope this helps to understand how these are currently handled and thanks for asking about it.

      Cheers

      • René September 20, 2018 at 1:15 pm #

        Hi Kento, thanks for clarifying this! It would be great if in the future, Groups could also handle Custom links in menu’s, making it a really alround solution. Keep up the good work!

        • Kento October 12, 2018 at 5:58 am #

          Hi René,

          I agree, we should have this and it’s already on my todo list 🙂

          Cheers

  4. Wilhelm September 25, 2018 at 12:06 pm #

    Hi

    Is it possible to use this plugin to counts the terms of a custom taxonomy made by the group. could you please advise on a way to do this.

    Here is a link to the same qestion on the wordpress plugin support page plus the code I use to count the raw post with out groups.

    https://wordpress.org/support/topic/use-the-groups-plugin-2-counts-a-custom-taxonomies-terms-per-group/

    • Kento October 12, 2018 at 5:46 am #

      Hi Wilhelm,

      On https://codex.wordpress.org/Class_Reference/WP_Query you will find examples of a meta_query added to the query, in the particular case you are asking about, you would use the meta_key = 'groups-read' and meta_value = $group_id with meta_compare = '=' … obviously $group_id would hold the ID of the relevant group; you would use ‘IN’ as the comparison for multiple groups.

      Cheers

  5. Yannick October 2, 2018 at 11:33 pm #

    Thanks for this great plugin
    In WP 4.9.8, we can find in Options nav_menu_item as a post type you can check.

    But once checked, I can’t see the “group” input into my menu items
    How can i restrict menu items to certain groups of users ?

    • Kento October 10, 2018 at 5:45 am #

      Hi Yannick,

      Nice to hear that you like it!

      Although you can find the nav_menu_item entry under the post types listed, it will not provide an additional option for those to restrict access. Where it’s not a custom link (fixed URL), the access restriction will determine whether the link is displayed or not based on the user viewing the site.

      Cheers

  6. Tom October 4, 2018 at 8:02 pm #

    Hi. How do I make the page accessible to the public when the pages are using Groups? It just says that it can’t find the page if you are not logged in. Thanks.

    • Kento October 12, 2018 at 5:21 am #

      Hi Tom,

      If a page is restricted to a certain group, it will not be accessible to the general public, this is by design – I would recommend to have a look at the documentation pages to understand how Groups’ Access Control works: http://docs.itthinx.com/document/groups/access-control/

      Cheers

  7. Alexis October 18, 2018 at 7:22 am #

    Heloo,
    you plugins seems to be realy powerfull.
    I’m looking for a solution so that users can themself suscribe to groups via forms.
    I’m doing a teaching site and looking to create some kind of path. When they give the right respond (some kind of test) they access automaticly to the second groups. Stuff like this.
    Is there an api call that i can put in my forms that suscribe a user to the next level. I ‘m sure it’s possible (loked to the api) but did not understand realy how to do it. (not pro in coding!)
    can you put me on track ?
    Thanks a lot for this beautyfull peace of code
    (an sorry for my non native english language!)
    ALexis

    • Kento October 25, 2018 at 9:49 pm #

      Hi Alexis,

      Many thanks on your kind feedback on the plugin!

      To assign a user to a group is very easy, you can find an example on top of this documentation page: http://docs.itthinx.com/document/groups/api/examples/

      There is also an example on how to obtain the group by name a bit further below on the page, you can use that to obtain the group ID used to assign the user to a group.

      I hope this helps you!

      Cheers

  8. Sveta October 21, 2018 at 10:03 am #

    Hello, Kento!

    Thank you for this plugin – it’s working very well 🙂 But last 1-2 month about 30% of users do not have access to closed pages – there are no restrictions for them.

    Could you help what could be the problem? Maybe some plugin interferes?

    • Kento October 25, 2018 at 9:59 pm #

      Hi Sveta,

      I have seen some cases where a group was deleted and the access restrictions were not removed (for a variety of reasons or conflicts). What you can try very easily is edit a page where this happens, assign a group to restrict access, save the page, then remove the group restricting access and save the page again. This will reset any internal assignments that might be mixed up.

      Cheers

  9. Louis October 29, 2018 at 6:17 pm #

    Very good plugin that we use extensively, but we have made a minor tweak to improve functionality. We are using the groups_group_info shortcode, which displays all user’s userids in specified group, we are modifying line 189 of file /groups/lib/views/class-groups-shortcodes.php changing “user_login” to “display_name” after each update so user’s display names are shown. It would be nice if one of the options included the choice of which to display.

    Thanks.

    • Kento November 10, 2018 at 10:42 am #

      Hi Louis,

      Instead of modifying Groups’ code itself it’s much easier to simply derive your own version of the shortcode by implementing it within a small plugin. Create a version which differs in name though in order to avoid a clash with the original one. You can find an example here for one of the shortcodes: https://github.com/itthinx/groups-cmember

      Cheers

  10. Jason November 5, 2018 at 12:27 am #

    I am trying to find a way to “modify” the groups_member shortcode but i cannot seem to get it to work.

    What i want is to be able to add some extra content to the shortcode so that when its being used its not just cutting off the content but rather cutting it off and adding an “unlock” icon and some text.

    we implemented the plugin on an onine digital subscription site, so we have a teaser of content and then the groups plugin locks down the rest of it. We currently have edited the plugin directly to add an else{ do some stuff like add an icon and link and some text} to the end of the shortcode function, but I really would like to add this code to the child theme in order to save the hassle of editing the plugin directly every time.

    remove_shortcode and add_shortcode don’t seem to work in this instance either… any help is much appreciated.

    • Kento November 10, 2018 at 10:22 am #

      Hi Jason,

      I can recommend to have a look at this implementation of a version of the shortcode https://github.com/itthinx/groups-cmember – it’s a plugin off which you can easily derive your version without the need to hack Groups itself. Just make sure to give the shortcode a unique variation name so it doesn’t conflict with the original one.

      Cheers

  11. Sally Law November 8, 2018 at 9:07 am #

    Hi I need advice. I am looking to create a site that is a magazine/ blog that showcases different artists work. I want the reader to be able to buy the product from the artist/ designer directly. By clicking on a link or image or so on. I would like this to take them to a place of sale. This means I want the artist( seller) to be able to create their own page or ‘section’ of the site. They need to be able to manage the inventory and send the goods and so on. I just want a percent for facilitating the sale. I thought to create a multisite network and get artists to create their own ‘shop’ within the net work. However I am wondering if there is a simpler way? It’s also possible that the seller(artist) will already have a website and won’t want to have to manage two. So perhaps Affilate links will be what I need. Any advice or direction as to how to go about even one of these concepts would be appreciated.

    Thank you

    • Kento November 10, 2018 at 10:39 am #

      Hi Sally,

      Besides what I replied to you earlier in response to your email, as I just get to read your comment here I wanted to point you to some additional resources. I’m not sure what connection to Groups we can draw to this but I would recommend to also have a look at the Product Vendors extension for WooCommerce, alternatively Affiliates Products and certainly at WooCommerce Product Search which will be useful to find products in any case.

      Cheers

Leave a Reply to Kento Click here to cancel reply.

Share