Content Control – The Ultimate User Access Restriction Plugin


Content Control v2.0 is a transformative plugin, enabling you to fine-tune every aspect of your WordPress website’s content. Dictate who sees what, where and when – whether it’s pages, posts, widgets, using our shortcode, or even individual blocks. Your content, your rules, executed with precision!

Content Control is user-friendly, yet powerful, catering to logged in users, specific user roles or logged out users. Our controls even extend to the block level, providing unparalleled control for Gutenberg and Full Site Editor users.

Key Features

Content Control is packed with features that allow you to:

  • Full control over your sites content, pages, posts, widgets, and even individual blocks.
  • Per block controls for Gutenberg and Full Site Editor, including user roles, device type, and more.
  • Restrict access to pages, posts, widgets, and individual blocks based on user status, roles, device type & more.
  • Manage access to media attachment pages, tags, categories, formats for logged in/out users or specific user roles.
  • Display a custom message to users who do not have permission to view the content
  • Redirect users without access permission to a login page, website homepage, or a custom URL.
  • Display specific content on a page or post to logged in users only, specific user roles, or logged out users.
  • Use the [content_control] shortcode to protect content inline.
  • Control widget visibility by selecting the user type that can view each widget.

Content Control Documentation

Note: Content Control restricts media access at the content level via media attachment pages. It does not restrict server-level access to actual media files (e.g.: .jpg, .gif, .pdf, .webp files).

Brought to You by Code Atlantic

Content Control is a Code Atlantic product. We pride ourselves on creating high-quality WordPress plugins designed to help your WordPress sites thrive.

Explore some of our most popular plugins:

  • Popup Maker – #1 Popup & Marketing Plugin for WordPress
  • User Menus – Show, Hide & Customize Menu Items For Different Users


  • Restrict access to individual blocks.
  • Create unlimited restriction sets.
  • Choose who can see the restricted content.
  • Display a message in place of restricted content.
  • Redirect users to log in or to another page if they access restricted content.
  • Choose any content you can think of to protect.
  • Use shortcodes to protect content inline.
  • Restrict widgets as well.


  • Install Content Control either via the plugin repository or by uploading the files to your server.
  • Activate Content Control.

If you need help getting started with Content Control please see FAQs which explains how to use the plugin.


Where can I get support?

If you get stuck, you can ask for help in the Content Control Plugin Forum.

Where can I report bugs or contribute to the project?

Bugs can be reported either in our support forum or we are happy to accept PRs on the Content Control GitHub repo.


Read all 476 reviews

Contributors & Developers

“Content Control – The Ultimate User Access Restriction Plugin” is open source software. The following people have contributed to this plugin.


“Content Control – The Ultimate User Access Restriction Plugin” has been translated into 9 locales. Thank you to the translators for their contributions.

Translate “Content Control – The Ultimate User Access Restriction Plugin” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.


v2.0.8 – 09/22/2023

  • Tweak: Ignore many Elementor queries from being restricted.
  • Fix: Error when required upgrade was marked as complete.
  • Fix: Bug that caused secondary queries to be handled like main queries.

v2.0.7 – 09/21/2023

  • Tweak: Only log each unique plugin debug notice once to prevent filling log files quickly.
  • Tweak: Replace usage of wp_upload_dir with wp_get_upload_dir which is more performant.
  • Fix: Error in upgrades when no data is found to migrate.
  • Fix: Error when function is called early & global $wp_query is not yet available.
  • Fix: Conditional check that could always return false.
  • Developer: Implemented PHP Static Analysis to catch more bugs before they happen. Currently clean on lvl 6.

v2.0.6 – 09/19/2023

  • Improvement: Added data backup step to upgrade process that stores json export in the media library.
  • Improvement: Better error handling in the data upgrade process.
  • Fix: Fix bug in data upgrade process that caused it to never finish.
  • Fix: Possible error when no restriction match found in some custom` queries.

v2.0.5 – 09/18/2023

  • Fix: Fix errors on some sites with custom conditions due to registering all rules too early.

v2.0.4 – 09/18/2023

  • Fix: Error when WP Query vars include anonymous function closures.

v2.0.3 – 09/18/2023

  • Fix: Log errors instead of throwing exceptions to prevent uncaught exceptions turning into fatal errors.

v2.0.2 – 09/18/2023

  • Fix: Fatal error from error logger on systems without write access.

v2.0.1 – 09/17/2023

  • Fix: Fatal error from unregistered or unknown rule types from 3rd party plugins/themes or custom code. Now they are logged in plugin settings page.

v2.0.0 – 09/17/2023

  • Feature: Restrict individual blocks in the Gutenberg editor.
  • Feature: Restrict individual blocks in the Full Site Editor.
  • Feature: Use a custom page template for restricted content.
  • Feature: Restrict blocks by device type with customizable breakpoints.
  • Feature: Restrict blocks by user status & role.
  • Feature: Global restrictions now offer more control over how restricted content is handled.
    • Choose to redirect or replace content with a custom page.
    • Filter or hide posts in archives or custom loops.
    • Secondary controls for posts if found in an archive.
  • Improvement: Match or exclude specific roles.
  • Improvement: Updated interface with intuitive and responsive controls.
  • Improvement: Boolean editor improvements.
  • Improvement: Control who can modify plugin settings.
  • Improvement: Upgraded tooling & Code quality improvements.

v1.1.10 – 12/28/2022

  • Security: Fix unescaped output for CSS classname in the [contentcontrol] shortcode allowing users with the ability to edit posts to inject code into the page.

v1.1.9 – 09/30/2021

  • Fix: Error when using Gutenberg Preview.

v1.1.8 – 07/17/2021

  • Fix: Error when Elementor instance preview property was null.

v1.1.7 – 07/17/2021

  • Fix: Prevent warning if widget settings don’t exist in options table.
  • Fix: Arbitrary limit of 10 on current items listed in Restriction Editor due to WP query default args.
  • Fix: Prevent restrictions from activating when using the Elementor page builder.

v1.1.6 – 03/21/2021

  • Fix: Nonce validation was preventing 3rd party plugin from saving widget settings when it failed. Thanks @jacobmischka
  • Fix: Prevent corrupted options from preventing saving of settings.

v1.1.5 – 02/22/2021

  • Fix: Issue where roles with - would not save when checked.

v1.1.4 – 03/24/2020

  • Improvement: Added gettext handling for several strings that were not translatable.
  • Tweak: Process shortcodes in default denial message contents.
  • Tweak: Various improvements in form reliability & user experience.
  • Fix: Issues with ajax search fields not retaining their values after save.
  • Fix: Issue where only would show 10 pages.
  • Fix: PHP 7.4 compatibility fixes.

v1.1.3 – 12/03/2019

  • Fix: Custom post type conditions were not always registered.

v1.1.2 – 11/10/2019

  • Tweak: Remove erroneous console.log messages in admin.
  • Fix: Fatal error when empty shortcode used.

v1.1.1 – 10/15/2019

  • Fix: Bugs where variables were not always the expected type.


  • Improvement: Added default denial message to shortcode.
  • Improvement: Render nested shortcodes in the [content_control] shortcode.
  • Fix: Bug where multiple roles checked together in restriction editor.


  • Fix: Minor notice on activation.


  • Fix: Call to undefined function.


  • Fix: Non static method called statically
  • Fix: Bug when using invalid variable type.


  • Initial Release