In wordpress how can I make sure a user only sees his own posts?

I have added a few custom roles to my blog. They work fine and the capabilities are as I have specified. The thing is that every user has a list of ‘all’ the posts in his posts window. He can only edit his own posts but does see posts written by other users.

How can I add a restriction to the role (or any different way) to make sure a user only sees his own posts?

Related posts

Leave a Reply

1 comment

  1. Try pasting this into your functions.php file. Anywhere, likely at the bottom away from other functions. This should restrict user’s from seeing posts that don’t belong to them.

    I hope this works for you! 🙂

    function posts_for_current_author($query) {
        global $pagenow;
    
        if( 'edit.php' != $pagenow || !$query->is_admin )
            return $query;
    
        if( !current_user_can( 'manage_options' ) ) {
            global $user_ID;
            $query->set('author', $user_ID );
        }
        return $query;
    }
    add_filter('pre_get_posts', 'posts_for_current_author');