<< See Contexture’s Other WordPress Freebies!

What does it do?

You control who has access to your contentConfigure permissions your wayUse groups for simple user organizationSee permissions at a glance

By adding much-needed user-management functionality to WordPress, Page Security by Contexture International (PSC) lets YOU decide which users can access which content. Add users to groups, set granular permissions for content, and finally take control of your website!

Create an intranet or a members-only area with just a few clicks, or build a subscription based system with automatically expiring memberships. You can even create multiple levels
of security for powerful, granular protection of any section, or sub-section on your site.

Use groups allow you to organize your users how YOU see fit, then use your groups to choose who can access posts, pages, custom content, or entire sections of your website.

PSC is created to be simple, yet powerful – and is designed to integrate seamlessly and intuitively with WordPress. If you know how to use WordPress, you know how to use PSC.

Quick Start

This will walk you through protecting your very first page. Let’s assume you want to limit access to a particular page to only registered users. Here’s how we’d do that:

  1. Go the page’s Edit screen – the one where you would normally make changes to the page.
  2. In the Restrict Access sidebar, click the option “Protect this page and it’s descendants“. More options will appear.
  3. Use the Available Groups drop-down to select the “Registered Users” group – then click the Add button.
  4. You’re done! Now, only registered users will be able to see this page. Everyone else will either be shown a default “Access Denied” message.

Tip: You can customize your Access Denied messages from you admin, under Settings > Page Security.

Tips & Tricks:

  • Any page or post can be easily made admin only!
    To do this: When editing a page, check the “Protect this page it’s descendants” checkbox but don’t add any groups. By default, all protected pages can be seen by Admins or Editors – but if you don’t add any groups, they will be invisible to non-admin users.
  • The “Restrict Access” sidebar is AJAX-loaded, so any changes you make to security are saved immediately! There’s no need to click the “Update” button to save changes to a page’s security.
  • You can now protect your entire site. When this option is enabled, the entire site is treated as if it were a “protected section”. Users must be a member of at least one group with site access, or they will be given an access denied message.

While we believe this plugin is secure, we make no warranty about it’s effectiveness during real-world use. Only time and testing will tell for sure. USE AT YOUR OWN RISK!


This plugin is distributed under the GNU General Public License (GPLv2).


Download Page Security from WordPress.org >>
<< See Contexture’s Other WordPress Freebies!

525 Responses to Page Security for WordPress

  1. Louis

    I downloaded and installed the contexture-plgin within WordPress 3.3.1, and when I activated it my wp-admin was intermittendly inaccessible. I tried several browsers. The only thing that helped was removing the plugin using FTP. I was not so amused…what goes wrong as I heard several good stories about this plugin.

    • Matt

      This sounds like a corrupt install. If you have the same problem after repeated attempts to install the plugin, it might be a server configuration problem (I don’t have any other reports of this kind of issue, so that’s just my best guess).

  2. luis

    Excellent Plugin!

  3. Rafi

    Feature request:

    Is it possible for change CTXPS_Queries::check_group_exists() to the following:

    On success, return an integer of the group’s ID
    On failure (i.e. if the group doesn’t exist), return 0


  4. KTC Director


    Still getting an error pop-up of “An error occurred” when selecting the “Protect this page and its descendants” checkbox on any page.

    WordPress 3.3 – plugin version 1.5.4

    IS there any update on when this will be resolved?

    It seems to have been an issue since late december. I can’t use a plug-in that leaves bugs open this long.

    • Matt

      I apologize for the late reply – for posterity, this was fixed in version 1.5.5. :-)

  5. Monique

    Thanks for this plugin. Which plugin for login/register do i need to use so that groupmembers can login? I tryed a few, but not the good ones.

  6. Seb Harrington

    When authoring a new post, clicking on the ‘Protect this page and its decendants’ check box in the ‘Restrict Access’ sidebar leads to a popup message saying ‘an error occured:’

    I’m using the latest version of Page Security (1.5.4) on version 3.3.1 of wordpress.

    Old posts still have their page permissions set and still have access to the Restrict Access group select drop down lists, it appears this only affects new posts.

    site: http://www.barnstormers.org.uk

    Thanks for a great plugin.

  7. Rafi

    Is it possible to have a child post/page override its parent security settings?

    For example:

    Post A has two child posts: B and C:

    Post A
    -Post B
    -Post C

    Posts B and C inherit security settings from their parent, Post A. My question is, it possible for posts B and C to override their parent post’s settings (in this case Post A)? So post B and C have their own security settings even though they’re children of Post A?

    I guess what I’m asking is, is there a way to separate the checkbox that says “Protect this Post and its Descendants” into two checkboxes: one that says: “Protect this post” and another that says: “And its descendants”?

    Sorry if I’m not making sense. Let me know if you’re confused at all and I’ll try to re-phrase my questions.


    • Matt

      Not at the moment. All permissions trickle down (as opposed to bubble up). When a page’s permissions are checked, so are the permissions of each of it’s parents – and all those requirements are merged into a single array.

      That said, I’ll add this to the project board and it might make it into PSC2. We have another similar feature for PSC2 that allows explicitly overriding the security of child elements, so it depends on how well we can mesh those two ideas.

  8. Wren

    The plugin works great on pages. But my problem is with posts.

    My group is split into different areas, each area has a title which I have protected.
    When a post is written, if one protected term is selected that group sees the post, no problem.

    There are times when you want more than one group to view the post.

    You select more than one protected term, the side bar says the groups have access to the post.

    When it is published the post can not be seen by the group members.

    Can anybody help?

  9. Spiro

    Hi there,
    thanks a lot for your plugin, which is very unsefull and practical.
    Since my update to version 1.5.4 i’m getting an error-message, whenever I set the “Protect this page and its descendants” check in any post or site. The error message is: “An error occurred: ” with no details given.
    After saving the page it’s possible to select the groups which should see the content.
    I’m using WP 3.3.1, with PHP 5.2.17 and MySQL 5.0.91 on a apache 2.2.21.
    Any ideas what my problem counld be?
    Thanks a lot

  10. ssloser

    I was wondering, could it be possible to restrict a group from accessing a page. I have 10 groups created and want to restrict only one group from accessing.

    Thanks for your hard work.

  11. Ronald

    I am using Page Security quite some time to my full satsfaction. However, using this on a new install with 3.3 causes an error just saying “Ar error occurred:”

    Apparently there is an error but no error string. This makes in super difficult to see if I made a mistake or the plugin is just not working with 3.3 as advertised.

  12. ssloser

    Hello PSC Team and Users,

    I have been using this great plugin and found that there was one feature missing. It is to have the group names shown next to the users in the users table.

    For that very reason, I made up a couple of functions you can add to your themes function.php file to display a custom Groups column at the end of the table. It even supports multiple group memberships as well. No sorting though.

    Here is the paste of the code: http://pastebin.com/HT3B6Su0

    Enjoy !

  13. rstemp

    Update to the previous post, seems if save th setting to protect the page, then navigate away and return to edit the page, the additional group selection features appear.

  14. rstemp

    Im just starting out with WP, so my site is a fresh, sandbox install,… I get the same message as the previous commenter, when adding a new post and clicking the ‘Protect this page and its descendents’ gets ‘An error occurred:’ pop up box.

  15. bar

    Hi, been using the plugin for a while now – thanks.
    Just upgraded to wp3.3 and contexture 1.5.4. Existing protection fine, but adding a new post and clicking the ‘Protect this page and its descendents’ gets ‘An error occurred:’ pop up box.


  16. Paul

    Hi There, Excellent plugin – Thanks :-)

    I’m using WordPress 3.3 and the latest version of the plugin. I have 2 issue i’m hoping someone can help with.

    1) Everytime, I tick the box to protect a page, I get an error message (just saying “An Error has Occurred). This is apparent for all posts that I try to protect, However, when I come away from the page and go back to it, it *has* protected the page.
    This is not the case for protecting a whole category, the same error appears but it *doesn’t* protect it.

    2) I’ve written some jobs that automatically insert data into the database. This is working fine. However, what I also want to do it auto protect the pages. I’m think the query is fine as when I protect the page from WordPress, I get the same entry in the database. Here is the query. (in perl) where tablename3=wp_ps_security and lastid is my postid

    $myquery3 = "INSERT INTO
    $tablename3 (sec_protect_type,sec_protect_id,sec_access_type,sec_access_id,sec_setting,sec_cascades)
    VALUES ('post','$lastid','group','4','allow','1')";

    $execute = $connect->query($myquery3);

    Hope someone can help :-)

    Thanks again for a great plugin

  17. Ray

    Looking forward to the new version when it arrives. This is a great plugin, very clean and easy to use. Thanks.

  18. Ray

    Where’s the plugin gone? Your link to download it from the WordPress plugins directory doesn’t go anywhere and a search won’t seem to find it either.

    • Matt

      It’s been temporarily hidden. A new version is being uploaded as I type this. :-)

  19. chie

    I tried to download this today, but it appears it is missing from the WordPress plugin repository. Hope this will be resolved. Thanks so much for this plugin.

    • Matt

      We discovered a bug that required an immediate update. The new version (1.5.4) should be available today.

    • Matt

      Thanks for checking in, Karliky. It will be available again shortly. We’re uploading a new version PSC at this very moment.

  20. Joanne

    Great plugin! Just one thing: are you planning to add a way to protect a menu item that is not a page or category? I have a couple of links on menus that I would like visible only to logged-in members.
    I’ve hacked it by adding a ctx_ps_security item in the postmeta table, but that’s not very maintainable.

    • Matt

      Updates to the current branch of PSC will be pretty limited from here on out. A while back we started working on a complete rewrite that will completely replace PSC. I’d hoped to have it out by the end of the year, but considering it’s completely a “free time” project, it’s still a ways off.

      That said, we’re still doing maintenance releases on PSC – so if you have some changes that you’d like to see in the official release, please feel free to send it my way. I’m always happy to incorporate community contributions when it makes sense.

  21. dpogr

    I try to translate your plugin into Polish from codestyling-localization and came across a small problem, I can not translate a few things that are simply not in the file, such as
    header Add New Group, The Security Options, buttons, Add Group, Group Membership and a few others. Tell me how to change it or directly in code, or will I run everything?

    Sorry for my English

    • Matt

      I’ll generate a new POT file for you to work from. Look for the updates in 1.5.5 (tomorrow).

      Todays release (1.5.4) won’t have the updates you need.

  22. tom blake

    How do I extend this great plugin to cover events from events manager extended?

  23. Jean-Claude

    When I try to activate the plug-in in my french WordPress 3.2.1 with php 5.2.13 I have the folowing error : “L’extension a généré 4379 caractères d’affichage inattendu lors de l’activation” (The extension generated 4379 unexpected display characters when activating).

    And then the “Add group” panel did not work : “Unable to create group. There was an unspecified system error.”

    Can you help me with this problem ?

    • Matt

      That message appears when the plugin activation throws an error of some kind.

      This sounds like a corrupt install. Try deleting the plugin and reinstalling.

  24. Liz

    I love this plugin but my site is going to be updated by many people and some of whom are not so savvy with WordPress (or even the internet for that matter).

    What I would like to see is a way that all new content is hidden by default – and only once people tick the box to who should have access (or make it public) will it be available. because we are worried that this plugin requires you to remember to hide stuff – and what if you forget???

    Is this feature in here? Would it be easy to add?

    Any help gratefully received.


  25. Ton

    I don’t get a drop down when I click “Protect this page and its descendants”. So, I’m not able to choose a group at the page.

    I made 3 groups and each group has 1 user.

    Please help, can’t find a solution.

  26. Benoit

    I’ve a french translation for this plugin, how can I send it ? Please contact me by email ;)

  27. Jeremy

    There’s a bug with the latest version of the plugin (1.5.3) where the wordpress database query used by the function add_membership_with_expiration() was not working. This is due to a typo on line 506 of queries.php. There’s an extra “s” on “group-rels”.

    Also, there seems to be a javascript bug when you try to unenroll a user from a group on their individual user page. Chrome reports

    Uncaught ReferenceError: data is not defined on core-ajax.js:15

  28. tirar

    I’ve a problem when using group permissions for categories.
    Each member is allocated to a specific group and I added these groups to my categories. It works fine, if there is only one group assigned. When adding more groups, non of them is able to see the article.
    Do you have any solution for this? Thanks a lot!

    • Matt

      I’ll look into this. There’s a patch due out next week, so if there’s a bug I can fix, it’ll get fixed.

  29. VanChien

    Error link redirec_to.
    When click to security page , link redirect not display http://
    exp: security link is: http://mydomain/SPAGE
    link redirect:
    How to change to:

    ( Not https://)

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>