QUESTION: Why can't my Subscriber role (i.e. logged out user) view Private posts with the read_private_posts (or read_private_pages) capability extended to them?

I use the Capability Manager Enhanced plugin to select and extend roles. I have also tested the below in my functions.php child theme for redundancy. I have disabled my cache (WP Rocket) plugin. I have selectively deleted all plugins and child theme files. I have even given the Subscriber Level 10 permissions with every capability selected. Nothing works and a "404 Error" still results when they try to access a Private post. Does anyone have any experience with this issue? It's really bugging me (pun intended).

function my_add_cap2role() {
    global $wp_roles;
    $wp_roles->add_cap('subscriber', 'read_private_posts' );
add_action( 'init', 'my_add_cap2role' );

Note that this is not a repeat question as all the others pertain to "how" to implement this functionality. I know how to but am working through a bug that is preventing a "subscriber" from properly viewing private pages.

  • A quick (and dirty) response, why should WP treat your subscriber, as you said yourself in the question (i.e. logged out user), more special then other logged out users?. When users are logged out they are all the same, even an admin is for WP in such a case 'just' a visitor. Or do I get your question totally wrong? If so, I will delete this comment of course. Btw a 404 has nothing to do with caps but is a server response read this please. – Charles Jan 31 '19 at 16:41
  • Thanks for the reply. The subscriber role is the default logged out user role ... that is simply the name WP gives to it. WP also redirects users with incorrect permissions to the 404 page template, so while it is a server response this is also the default WP functionality to hide private pages if you shouldn't be allowed to read them. – Chris Arnold Feb 2 '19 at 7:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.