You need to hide a post from non-logged-in users. Or show certain pages only to Editors. Or create subscriber-only content. The typical advice? Install a membership plugin with 50 features you don't need. Here's how to do role-based content visibility with just PHP no bloated plugins required. The Core Concept WordPress already has a robust role and capability system. Every user has a role (administrator, editor, author, subscriber, etc.), and each role has capabilities. We can leverage this to control content visibility at two levels: Post/page level entire posts visible only to certain roles Content level specific sections within a post Method 1: Filter Posts by Role (Query Level) This approach hides posts from archive pages and search results: /** * Filter posts based on user role */ function filter_posts_by_role ( $query ) { // Only on frontend, main queries, not single posts if ( is_admin () || !…