{"id":3838,"date":"2025-02-15T19:01:04","date_gmt":"2025-02-15T19:01:04","guid":{"rendered":"https:\/\/s-o-s.net\/content-control-the-ultimate-content-restriction-plugin-restrict-content-create-conditional-blocks-more\/"},"modified":"2025-02-15T19:01:04","modified_gmt":"2025-02-15T19:01:04","slug":"content-control-the-ultimate-content-restriction-plugin-restrict-content-create-conditional-blocks-more","status":"publish","type":"post","link":"https:\/\/s-o-s.net\/en_gb\/content-control-the-ultimate-content-restriction-plugin-restrict-content-create-conditional-blocks-more\/","title":{"rendered":"Content Control \u2013 The Ultimate Content Restriction Plugin! Restrict Content, Create Conditional Blocks &#038; More"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<article id=\"post-51223\" class=\"alignwide post-51223 plugin type-plugin status-publish hentry plugin_tags-access-control plugin_tags-content-restriction plugin_tags-maintenance-mode plugin_tags-members-only plugin_tags-membership plugin_category-user-management plugin_contributors-codeatlantic plugin_contributors-danieliser plugin_business_model-commercial plugin_committers-codeatlantic plugin_committers-danieliser plugin_support_reps-danieliser plugin_support_reps-jamiepineda plugin_support_reps-kimmyx plugin_support_reps-mlchaves plugin_support_reps-sarai1\">\n<div class=\"plugin-banner\" id=\"plugin-banner-content-control\"><\/div>\n<header class=\"plugin-header\">\n<div class=\"entry-heading-container\">\n<div>\n<div class=\"entry-thumbnail\">\n\t\t\t\t\t<img decoding=\"async\" class=\"plugin-icon\" srcset=\"https:\/\/ps.w.org\/content-control\/assets\/icon-128x128.gif?rev=2968535, https:\/\/ps.w.org\/content-control\/assets\/icon-256x256.gif?rev=2968535 2x\" src=\"https:\/\/ps.w.org\/content-control\/assets\/icon-256x256.gif?rev=2968535\" alt=\"\">\t\t\t\t<\/div>\n<div>\n<h1 class=\"plugin-title\">Content Control \u2013 The Ultimate Content Restriction Plugin! Restrict Content, Create Conditional Blocks &amp; More<\/h1>\n<p>\t\t\t\t\t<span class=\"byline\">By <span class=\"author vcard\"><a target=\"_blank\" class=\"url fn n\" href=\"https:\/\/profiles.wordpress.org\/codeatlantic\/\" rel=\"noopener\">Code Atlantic<\/a><\/span><\/span>\n\t\t\t\t<\/div>\n<\/p><\/div>\n<div class=\"plugin-actions\">\n<div class=\"wp-block-button is-small plugin-download download-button\"><a target=\"_blank\" class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/downloads.wordpress.org\/plugin\/content-control.2.5.0.zip\" rel=\"noopener\">Download<\/a><\/div>\n<div class=\"wp-block-button is-small is-style-outline plugin-preview download-button is-style-outline--9\"><a target=\"_blank\" class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/wordpress.org\/plugins\/content-control\/?preview=1\" rel=\"noopener\">Live Preview<\/a><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/header>\n<p><!-- .entry-header --><\/p>\n<p>\t<span id=\"description\"><\/span><br \/>\n\t<span id=\"reviews\"><\/span><br \/>\n\t<span id=\"installation\"><\/span><br \/>\n\t<span id=\"developers\"><\/span><br \/>\n\t<span id=\"advanced\" class=\"\"><\/span><br \/>\n\t<span id=\"section-links\"><\/p>\n<ul class=\"tabs clear\">\n<li id=\"tablink-description\"><a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/content-control\/#description\" rel=\"noopener\">Details<\/a><\/li>\n<li id=\"tablink-reviews\"><a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/content-control\/#reviews\" rel=\"noopener\">Reviews<\/a><\/li>\n<li id=\"tablink-installation\">\n\t\t\t\t<a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/content-control\/#installation\" rel=\"noopener\">Installation<\/a>\n\t\t\t<\/li>\n<li id=\"tablink-developers\"><a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/content-control\/#developers\" rel=\"noopener\">Development<\/a><\/li>\n<\/ul>\n<div id=\"link-support\">\n\t\t\t<a target=\"_blank\" href=\"https:\/\/wordpress.org\/support\/plugin\/content-control\/\" rel=\"noopener\">Support<\/a>\n\t\t<\/div>\n<p>\t<\/span><br \/>\n\t<script type=\"text\/javascript\">if ( '#changelog' == window.location.hash ) { window.setTimeout( function() { window.location.hash=\"#developers\"; }, 10 ); }<\/script><\/p>\n<div class=\"entry-content\">\n<div id=\"tab-description\" class=\"plugin-description section\">\n<h2 id=\"description-header\">Description<\/h2>\n<p>Content Control is a transformative plugin, allowing you to fine-tune every aspect of your WordPress website\u2019s content. Decide who gets to see what, where, and when \u2013 be it pages, posts, widgets, or individual block visibility using our handy shortcode. Your content, your rules, executed perfectly!<\/p>\n<p>Content Control is intuitive and powerful, designed for all users\u2014whether logged in, holding specific roles, or even guests. Need top-tier content restriction or a dependable access manager for your site? Look no further. We\u2019ve expanded our controls to include Gutenberg and Full Site Editor, giving you unmatched command.<\/p>\n<h4>Key Features<\/h4>\n<p>Discover what Content Control brings to your table:<\/p>\n<ul>\n<li>Full control over your site\u2019s content, restrict user access with ease!.<\/li>\n<li>Create a <strong>Paid Membership<\/strong> sites using your favorite or existing ecommerce plugins.<\/li>\n<li>Set up a seamless paywall for your content, providing teasers for users and prompting them to purchase access.<\/li>\n<li>Per block controls for Gutenberg and Full Site Editor, including user roles, device type, and more.\n<ul>\n<li>Responsive block controls with customizable breakpoints.<\/li>\n<li>Control block visibility by user status, roles, device type &amp; more.<\/li>\n<\/ul>\n<\/li>\n<li>Restrict access to pages, posts, widgets, and individual blocks based on user status, roles, device type &amp; more.<\/li>\n<li>Offer membership tools for crafting membership access and members-only content.<\/li>\n<li>Provide responsive block designs that adapt to varying device sizes.<\/li>\n<li>Lockdown content selectively for improved user experiences.<\/li>\n<li>Implement role-based redirections to guide users effectively.<\/li>\n<li>Unlock the power of subscription content and monetization strategies.<\/li>\n<li>Safeguard specific categories, tags, custom post types, and custom taxonomies.<\/li>\n<li>Manage access to <a target=\"_blank\" href=\"https:\/\/www.hongkiat.com\/blog\/wordpress-attachment-pages\/\" rel=\"nofollow ugc noopener\">media attachment pages<\/a> for logged in\/out users or specific user roles.<\/li>\n<li>Display a custom message to users who do not have permission to view the content.<\/li>\n<li>Display specific content on a page or post to logged in users only, specific user roles, or logged out users.<\/li>\n<li>Redirect users without access permission to a login page, website homepage, or a custom URL.<\/li>\n<li>Highlight subscriber-only content for premium users.<\/li>\n<li>Use the <code>[content_control]<\/code> shortcode to protect content inline and cater to subscriber preferences.<\/li>\n<li>Control widget visibility by selecting the user type that can view each widget.<\/li>\n<li>Conditionally show coming soon or maintenance mode pages based on various rules.<\/li>\n<li>Restrict access to your site\u2019s REST API endpoints.<\/li>\n<\/ul>\n<p><a target=\"_blank\" href=\"https:\/\/contentcontrolplugin.com\/docs\/?utm_campaign=plugin-info&amp;utm_source=readme-description&amp;utm_medium=wordpress&amp;utm_content=documentation-link\" rel=\"nofollow ugc noopener\">Content Control Documentation<\/a><\/p>\n<h4>Pro Features<\/h4>\n<p>Content Control Pro, with advanced features like:<\/p>\n<ul>\n<li>Content Teasers for Paywalls, giving your users a sneak peek, leaving them wanting more.<\/li>\n<li>Optimize your WooCommerce &amp; Easy Digital Downloads (EDD) &amp; Paid Memberships Pro experiences with advanced rules.<\/li>\n<li>Schedule blocks, controlling content visibility timings using customizable scheduling rules.<\/li>\n<li>Dive deeper with advanced block rules and a boolean editor.<\/li>\n<li>Customize login, registration &amp; recovery page urls. Custom login urls give a more personalized user experience.<\/li>\n<\/ul>\n<p><a target=\"_blank\" href=\"https:\/\/contentcontrolplugin.com\/pricing\/?utm_campaign=plugin-info&amp;utm_source=readme-description&amp;utm_medium=wordpress&amp;utm_content=upgrade-link\" rel=\"nofollow ugc noopener\">Upgrade to Content Control Pro<\/a><\/p>\n<p><strong>Note<\/strong>: Content Control handles media access via content on media attachment pages but won\u2019t restrict direct server-level access to media files.<\/p>\n<h4>Passionately Crafted by Code Atlantic<\/h4>\n<p>At <a target=\"_blank\" href=\"https:\/\/code-atlantic.com\" title=\"Code Atlantic - High Quality WordPress Plugins\" rel=\"nofollow ugc noopener\">Code Atlantic<\/a>, we\u2019re passionate about crafting tools that empower your digital journey. Content Control is a testament to our commitment to quality.<\/p>\n<p>Dive into some of our renowned plugins:<\/p>\n<ul>\n<li><strong><a target=\"_blank\" href=\"https:\/\/wppopupmaker.com\" title=\"#1 Popup &amp; Marketing Plugin for WordPress\" rel=\"nofollow ugc noopener\">Popup Maker<\/a><\/strong> \u2013 The #1 Popup &amp; Marketing Plugin for WordPress<\/li>\n<li><strong><a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/user-menus\/\" title=\"Show, Hide &amp; Customize Menu Items For Different Users\" rel=\"ugc noopener\">User Menus<\/a><\/strong> \u2013 Innovatively Show, Hide &amp; Customize Menu Items<\/li>\n<\/ul>\n<\/div>\n<div id=\"screenshots\" class=\"plugin-screenshots section\">\n<h2 id=\"screenshots-header\">Screenshots<\/h2>\n<ul class=\"plugin-screenshots\">\n<li>\n<figure><a target=\"_blank\" href=\"https:\/\/ps.w.org\/content-control\/assets\/screenshot-1.png?rev=2968104\" rel=\"nofollow noopener\"><img decoding=\"async\" class=\"screenshot\" src=\"https:\/\/ps.w.org\/content-control\/assets\/screenshot-1.png?rev=2968104\" alt=\"\"><\/a><figcaption>Restrict access to individual blocks.<\/figcaption><\/figure>\n<\/li>\n<li>\n<figure><a target=\"_blank\" href=\"https:\/\/ps.w.org\/content-control\/assets\/screenshot-2.png?rev=2968104\" rel=\"nofollow noopener\"><img decoding=\"async\" class=\"screenshot\" src=\"https:\/\/ps.w.org\/content-control\/assets\/screenshot-2.png?rev=2968104\" alt=\"\"><\/a><figcaption>Create unlimited restriction sets.<\/figcaption><\/figure>\n<\/li>\n<li>\n<figure><a target=\"_blank\" href=\"https:\/\/ps.w.org\/content-control\/assets\/screenshot-3.png?rev=2968104\" rel=\"nofollow noopener\"><img decoding=\"async\" class=\"screenshot\" src=\"https:\/\/ps.w.org\/content-control\/assets\/screenshot-3.png?rev=2968104\" alt=\"\"><\/a><figcaption>Choose who can see the restricted content.<\/figcaption><\/figure>\n<\/li>\n<li>\n<figure><a target=\"_blank\" href=\"https:\/\/ps.w.org\/content-control\/assets\/screenshot-4.png?rev=2968104\" rel=\"nofollow noopener\"><img decoding=\"async\" class=\"screenshot\" src=\"https:\/\/ps.w.org\/content-control\/assets\/screenshot-4.png?rev=2968104\" alt=\"\"><\/a><figcaption>Display a message in place of restricted content.<\/figcaption><\/figure>\n<\/li>\n<li>\n<figure><a target=\"_blank\" href=\"https:\/\/ps.w.org\/content-control\/assets\/screenshot-5.png?rev=2968104\" rel=\"nofollow noopener\"><img decoding=\"async\" class=\"screenshot\" src=\"https:\/\/ps.w.org\/content-control\/assets\/screenshot-5.png?rev=2968104\" alt=\"\"><\/a><figcaption>Redirect users to log in or to another page if they access restricted content.<\/figcaption><\/figure>\n<\/li>\n<li>\n<figure><a target=\"_blank\" href=\"https:\/\/ps.w.org\/content-control\/assets\/screenshot-6.png?rev=2968104\" rel=\"nofollow noopener\"><img decoding=\"async\" class=\"screenshot\" src=\"https:\/\/ps.w.org\/content-control\/assets\/screenshot-6.png?rev=2968104\" alt=\"\"><\/a><figcaption>Choose any content you can think of to protect.<\/figcaption><\/figure>\n<\/li>\n<li>\n<figure><a target=\"_blank\" href=\"https:\/\/ps.w.org\/content-control\/assets\/screenshot-7.png?rev=2968104\" rel=\"nofollow noopener\"><img decoding=\"async\" class=\"screenshot\" src=\"https:\/\/ps.w.org\/content-control\/assets\/screenshot-7.png?rev=2968104\" alt=\"\"><\/a><figcaption>Use shortcodes to protect content inline.<\/figcaption><\/figure>\n<\/li>\n<li>\n<figure><a target=\"_blank\" href=\"https:\/\/ps.w.org\/content-control\/assets\/screenshot-8.png?rev=2968104\" rel=\"nofollow noopener\"><img decoding=\"async\" class=\"screenshot\" src=\"https:\/\/ps.w.org\/content-control\/assets\/screenshot-8.png?rev=2968104\" alt=\"\"><\/a><figcaption>Restrict widgets as well.<\/figcaption><\/figure>\n<\/li>\n<\/ul>\n<\/div>\n<div id=\"tab-installation\" class=\"plugin-installation section\">\n<h2 id=\"installation-header\">Installation<\/h2>\n<ul>\n<li>Install Content Control either via the WordPress.org plugin repository or by uploading the files to your server.<\/li>\n<li>Activate Content Control.<\/li>\n<\/ul>\n<p>If you need help getting started with Content Control please see <a target=\"_blank\" href=\"https:\/\/wordpress.org\/plugins\/content-control\/faq\/\" title=\"Content Control FAQ\" rel=\"ugc noopener\">FAQs<\/a> which explains how to use the plugin.<\/p>\n<\/div>\n<div id=\"faq\" class=\"plugin-faq section\">\n<h2 id=\"faq-header\">FAQ<\/h2>\n<dl>\n<dt id=\"can%20i%20offer%20paid%20memberships%20with%20content%20control%3F\">\n<h3>Can I offer paid memberships with Content Control?<\/h3>\n<\/dt>\n<dd>\n<p>Currently this is available in our Pro version when coupled with your favorite ecommerce plugins such as WooCommerce, Easy Digital Downloads &amp; Paid Memberships Pro.<\/p>\n<\/dd>\n<dt id=\"where%20can%20i%20get%20support%3F\">\n<h3>Where can I get support?<\/h3>\n<\/dt>\n<dd>\n<p>If you get stuck, you can ask for help in the <a target=\"_blank\" href=\"https:\/\/wordpress.org\/support\/plugin\/content-control\" rel=\"ugc noopener\">Content Control Plugin Forum<\/a>.<\/p>\n<\/dd>\n<dt id=\"where%20can%20i%20report%20bugs%20or%20contribute%20to%20the%20project%3F\">\n<h3>Where can I report bugs or contribute to the project?<\/h3>\n<\/dt>\n<dd>\n<p>Bugs can be reported either in our support forum or we are happy to accept PRs on the <a target=\"_blank\" href=\"https:\/\/github.com\/code-atlantic\/content-control\/issues\" rel=\"nofollow ugc noopener\">Content Control GitHub repo<\/a>.<\/p>\n<\/dd>\n<\/dl>\n<\/div>\n<div id=\"tab-reviews\" class=\"plugin-reviews section\">\n<h2 id=\"reviews-header\">Reviews<\/h2>\n<div class=\"plugin-reviews\">\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/6e0d20667cf96ff46c119f9d03ce7d308911ef4861cc98b92c59d0ffca87a02c?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/6e0d20667cf96ff46c119f9d03ce7d308911ef4861cc98b92c59d0ffca87a02c?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/awesome-10452\/\" rel=\"noopener\">Awesome<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/maxence755\/\" title=\"Posts by maxence755\" rel=\"author noopener\">maxence755<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">February 1, 2025<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">It does a great job and for free, many thanks to the dev \ud83d\ude42<\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/e1214290c9528fc9eb91520dee398dc472c040d029ee415c65d21276aa8ab29d?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/e1214290c9528fc9eb91520dee398dc472c040d029ee415c65d21276aa8ab29d?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/great-plugin-40077\/\" rel=\"noopener\">Great plugin!<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/danbru\/\" title=\"Posts by danbru\" rel=\"author noopener\">danbru<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">January 31, 2025<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">Great! It does just what I need.<\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/8a4f2f31c923719922a6458d88b04af1569c4d7be0a8f79d4bd3b1bfa5112b2a?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/8a4f2f31c923719922a6458d88b04af1569c4d7be0a8f79d4bd3b1bfa5112b2a?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/perfeito-370\/\" rel=\"noopener\">Perfeito<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/ruyqueiroz\/\" title=\"Posts by ruyqueiroz\" rel=\"author noopener\">ruyqueiroz<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">January 31, 2025<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">Funcionando muito bem<\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/bece0a1b0e8503b7cb27f93f5f8858fe11415db624efec33fa14ffe84ff4db60?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/bece0a1b0e8503b7cb27f93f5f8858fe11415db624efec33fa14ffe84ff4db60?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/great-plugin-40002\/\" rel=\"noopener\">Great plugin<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/teck87\/\" title=\"Posts by teck87\" rel=\"author noopener\">teck87<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">January 17, 2025<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">It\u2019s an excellent plugin, thanks for your great effort in keeping it updated.<\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/74e7ff55d40b110e50cd32e5851c6b7eb6a850527f07497895acf210469afc6e?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/74e7ff55d40b110e50cd32e5851c6b7eb6a850527f07497895acf210469afc6e?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"4 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"4\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-empty\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/no-subscriber-tiers-woocommerce-surecart\/\" rel=\"noopener\">No subscriber tiers (WooCommerce\/Surecart)?..<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/yesyeswordpress\/\" title=\"Posts by yesyeswordpress\" rel=\"author noopener\">yesyeswordpress<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">January 15, 2025<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">Great, and even the basic version has Block integration to control individual pieces of content on your page!Only thing, unless I\u2019m missing something, is no subscriber tiers (beyond user roles like \u201cEditor\u201d, \u201cSubscriber\u201d etc)and lacking a simple way of, connecting either Woocommerce\/Surecartsubscribed users or who\u2019ve bought a specific item, to a user role\/tier(so after bying a subscription\/product from your store, they noware assigned a nr or \u201cgold\u201d or \u201csilver\u201d etc status and can view all contentin that tier\u2026)Or is that possible but I\u2019m missing something?..<\/p>\n<p>And blocking the homepage only, is not working for some reason..Using a block theme, not sure if that\u2019s the issue?And noticed a confusing phrasing in the UI..When making the restriction, you actually pick who CAN see the content,but in the UI it says \u201cRestricted to\u201d..(which can still mean the same thing, as in \u2018access being restricted to\u2019 thosepeople, but it sounds like the content is being restricted for those people\u2026anyways)<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"plugin-review\">\n<div class=\"review-avatar\">\n\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/3ad7154c7ab04eadc9fb4080b7256d86af66e5f22d3822698d3a4b5c8b28878b?s=60&amp;d=retro&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/3ad7154c7ab04eadc9fb4080b7256d86af66e5f22d3822698d3a4b5c8b28878b?s=120&amp;d=retro&amp;r=g 2x\" class=\"avatar avatar-60 photo\" height=\"60\" width=\"60\">\t\t\t\t\t<\/div>\n<div class=\"review\">\n<header>\n<div class=\"header-top\">\n<div class=\"wporg-ratings\" aria-label=\"5 out of 5 stars\" data-title-template=\"%s out of 5 stars\" data-rating=\"5\" style=\"color:#ffb900;\"><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><span class=\"dashicons dashicons-star-filled\"><\/span><\/div>\n<h3 class=\"review-title\"><a target=\"_blank\" class=\"url\" href=\"https:\/\/wordpress.org\/support\/topic\/excellent-plugin-9432\/\" rel=\"noopener\">Excellent plugin<\/a><\/h3>\n<\/p><\/div>\n<div class=\"header-bottom\">\n\t\t\t\t\t\t\t\t<span class=\"review-author author vcard\"><a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/johnoryan246810\/\" title=\"Posts by johnoryan246810\" rel=\"author noopener\">johnoryan246810<\/a><\/span><br \/>\n\t\t\t\t\t\t\t\t<span class=\"review-date\">December 15, 2024<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/header>\n<div class=\"review-content\">Better than I thought<\/div>\n<\/p><\/div>\n<\/article><\/div>\n<p>\t\t<a target=\"_blank\" class=\"reviews-link\" href=\"https:\/\/wordpress.org\/support\/plugin\/content-control\/reviews\/\" rel=\"noopener\"><br \/>\n\t\t\tRead all 550 reviews\t\t<\/a><\/div>\n<div id=\"tab-developers\" class=\"plugin-developers section\">\n<h2 id=\"developers-header\">Contributors &amp; Developers<\/h2>\n<div class=\"plugin-contributors\">\n<p>\u201cContent Control \u2013 The Ultimate Content Restriction Plugin! Restrict Content, Create Conditional Blocks &amp; More\u201d is open source software. The following people have contributed to this plugin.<\/p>\n<p><span class=\"screen-reader-text\">Contributors<\/span><\/p>\n<ul id=\"contributors-list\" class=\"contributors-list\">\n<li>\n\t\t\t\t<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/5ff4031eb58bc71be05166cf69878e19def3de05a3d48f368089c89745d2bf1c?s=32&amp;d=mm&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/5ff4031eb58bc71be05166cf69878e19def3de05a3d48f368089c89745d2bf1c?s=64&amp;d=mm&amp;r=g 2x\" class=\"avatar avatar-32 photo\" height=\"32\" width=\"32\">\t\t\t\t<a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/codeatlantic\/\" rel=\"noopener\"><br \/>\n\t\t\t\t\tCode Atlantic\t\t\t\t<\/a>\n\t\t\t<\/li>\n<li>\n\t\t\t\t<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/secure.gravatar.com\/avatar\/749586fb2ffa57fab58380cd691c0d9a8878497e47e278e21602252bd8dfe8ba?s=32&amp;d=mm&amp;r=g\" srcset=\"https:\/\/secure.gravatar.com\/avatar\/749586fb2ffa57fab58380cd691c0d9a8878497e47e278e21602252bd8dfe8ba?s=64&amp;d=mm&amp;r=g 2x\" class=\"avatar avatar-32 photo\" height=\"32\" width=\"32\">\t\t\t\t<a target=\"_blank\" href=\"https:\/\/profiles.wordpress.org\/danieliser\/\" rel=\"noopener\"><br \/>\n\t\t\t\t\tDaniel Iser\t\t\t\t<\/a>\n\t\t\t<\/li>\n<\/ul><\/div>\n<div class=\"plugin-development\">\n<p>\u201cContent Control \u2013 The Ultimate Content Restriction Plugin! Restrict Content, Create Conditional Blocks &amp; More\u201d has been translated into 9 locales. Thank you to <a target=\"_blank\" href=\"https:\/\/translate.wordpress.org\/projects\/wp-plugins\/content-control\/contributors\" rel=\"noopener\">the translators<\/a> for their contributions.<\/p>\n<p><a target=\"_blank\" href=\"https:\/\/translate.wordpress.org\/projects\/wp-plugins\/content-control\" rel=\"noopener\">Translate \u201cContent Control \u2013 The Ultimate Content Restriction Plugin! Restrict Content, Create Conditional Blocks &amp; More\u201d into your language.<\/a><\/p>\n<h3>Interested in development?<\/h3>\n<p><a target=\"_blank\" href=\"https:\/\/plugins.trac.wordpress.org\/browser\/content-control\/\" rel=\"noopener\" class=\"broken_link\">Browse the code<\/a>, check out the <a target=\"_blank\" href=\"https:\/\/plugins.svn.wordpress.org\/content-control\/\" rel=\"noopener\">SVN repository<\/a>, or subscribe to the <a target=\"_blank\" href=\"https:\/\/plugins.trac.wordpress.org\/log\/content-control\/\" rel=\"noopener\" class=\"broken_link\">development log<\/a> by <a target=\"_blank\" href=\"https:\/\/plugins.trac.wordpress.org\/log\/content-control\/?limit=100&amp;mode=stop_on_copy&amp;format=rss\" rel=\"noopener\" class=\"broken_link\">RSS<\/a>.<\/p>\n<\/div>\n<\/div>\n<div id=\"tab-changelog\" class=\"plugin-changelog section\">\n<h2 id=\"changelog-header\">Changelog<\/h2>\n<h4>v2.5.0 \u2013 Restriction Check Improvements \u2013 08\/18\/2024<\/h4>\n<ul>\n<li>Improvement: Change rule processing to be more explicit for each context\/rule type, improving performance &amp; reliability of how rules are handled in some edge cases.<\/li>\n<li>Improvement: Update <code>content_control_known_blockTypes<\/code> option to not be autoloaded.<\/li>\n<li>Improvement: Update QueryMonitor output to differentiate between terms &amp; posts.<\/li>\n<li>Fix: Error due to invalid return value variable name.<\/li>\n<\/ul>\n<h4>v2.4.0 \u2013 Performance Matters \u2013 06\/21\/2024<\/h4>\n<ul>\n<li>Improvement: Optimized the order we determine if we can skip checking restrictions for any givem content type. Thanks to PolyLang team for the suggestion.<\/li>\n<li>Improvement: Better coverage for taxonomy query detection &amp; filtering.<\/li>\n<li>Improvement: Added inertnal function caches to drastically reduce overhead of checking restrictions. This may result in a significant performance increase for large sites or sites with many restrictions.<\/li>\n<li>Improvement: Only generate list of page template types for rules when in the admin, saving potential DB query.<\/li>\n<li>Tweak: Explicitly bail on rule checks for unknown Rest API endpoints as we don\u2019t currently fully support them. Filter below added to allow modifying this behavior.<\/li>\n<li>Tweak: Remove upsell message when pro version is active.<\/li>\n<li>Fix: Bug with restricting logged in users from content when the user had post_edit permissions for the post.<\/li>\n<li>Developer: Added new internal globals variable handler instead of using <code>global $vars<\/code> directly. Set of helper functions available to get\/set\/push\/pop global variables.<\/li>\n<li>Developer: Made controllers more efficient by conditionally loading them only when needed.<\/li>\n<li>Developer: Added new filter <code>content_control\/determine_uknonwn_rest_api_intent<\/code> to allow 3rd party plugins to modify the REST API intent used in rule checks specifically for unknown intents.<\/li>\n<li>Developer: Added new filter <code>content_control\/request_is_excluded_rest_endpoint<\/code> to allow 3rd party plugins to exclude\/include custom REST API endpoints from restriction checks.<\/li>\n<li>Developer: Added new filter <code>'content_control\/pre_query_can_be_ignored<\/code> allowing early return for known ignorable queries.<\/li>\n<li>Developer: Added second paramter to the<code>content_control\/get_rest_api_intent<\/code> filter pass the <code>$rest_route<\/code>.<\/li>\n<\/ul>\n<h4>v2.3.0 \u2013 05\/23\/2024<\/h4>\n<ul>\n<li>Improvement: Added more full coverage of all query types for for restriction handling. This helps catch more custom\/3rd party AJAX search queries that were not being filtered.<\/li>\n<li>Improvement: Added better handling for excluding queries and admin views from restrictions.<\/li>\n<li>Improvement: Added filters for easier compatibility fixes with 3rd party plugins.<\/li>\n<li>Improvement: Added support\/fixes for BetterDocs custom AJAX searching.<\/li>\n<li>Improvement: Added support\/fixes for Blocksy theme custom AJAX searching.<\/li>\n<li>Fix: Bug where $post-&gt;ID was used without checking if $post was set.<\/li>\n<li>Developer: Added new filter <code>content_control\/get_rest_api_intent<\/code> to allow 3rd party plugins to modify the REST API intent used in rule checks.<\/li>\n<\/ul>\n<h4>v2.2.8 \u2013 05\/07\/2024<\/h4>\n<ul>\n<li>Fix: Issue causing some non-admin AJAX requests to the REST API from being run through protection checks.<\/li>\n<li>Fix: Error when using page template rules &amp; global $post is not set properly.<\/li>\n<\/ul>\n<h4>v2.2.7 \u2013 03\/20\/2024<\/h4>\n<ul>\n<li>Improvement: Fix plugin preview blueprint file location.<\/li>\n<\/ul>\n<h4>v2.2.6 \u2013 03\/20\/2024<\/h4>\n<ul>\n<li>Improvement: Add plugin preview blueprint support.<\/li>\n<\/ul>\n<h4>v2.2.5 \u2013 03\/20\/2024<\/h4>\n<ul>\n<li>Improvement: Logic for protection being disabled was improved to be more efficient.<\/li>\n<li>Fix: Bug with The Events Calendar showing blank screen when using Redirect restriction.<\/li>\n<li>Fix: Bug where redirect based restrictions failed on The Events Calendar pages.<\/li>\n<li>Fix: Typo in order of widget REST API check conditionals.<\/li>\n<\/ul>\n<h4>v2.2.4 \u2013 03\/20\/2024<\/h4>\n<ul>\n<li>Fix: Enforced strict versioning in autoload build tool that recently auto updated causing the autoloader to suddenly leak unprefixed classes. This was causing random issues in combination with <a target=\"_blank\" href=\"https:\/\/pressidium.com\/blog\/wordpress-plugin-conflicts-how-to-prevent-composer-dependency-hell\/\" rel=\"nofollow ugc noopener\">incompatible autoloading by other plugins<\/a>.<\/li>\n<\/ul>\n<h4>v2.2.3 \u2013 03\/19\/2024<\/h4>\n<ul>\n<li>Fix: Recurssion error with taxonomy queries due to calling setup_post during get_terms query. WooCommerce then setup global $product, which called another taxonomy query, and so on.<\/li>\n<li>Fix: Bug when modified WP_Term_Query-&gt;terms arrays of ints were passed instead of epxected term objects.<\/li>\n<\/ul>\n<h4>v2.2.2 \u2013 03\/19\/2024<\/h4>\n<ul>\n<li>Fix: Bug with new taxonomy query filter. For now this is limited to the REST API only.<\/li>\n<\/ul>\n<h4>v2.2.1 \u2013 03\/18\/2024<\/h4>\n<ul>\n<li>Fix: Bug where the plugin had errors on taxonomy pages or queries.<\/li>\n<li>Fix: Error when Term query taxonomy arg was not an array.<\/li>\n<\/ul>\n<h4>v2.2.0 \u2013 03\/17\/2024<\/h4>\n<ul>\n<li>Feature: Add support for <a target=\"_blank\" href=\"https:\/\/contentcontrolplugin.com\/features\/rest-api\/\" rel=\"nofollow ugc noopener\" class=\"broken_link\">restricing content in the REST API<\/a>.<\/li>\n<li>Feature: Add support for terms in WP term queries.<\/li>\n<li>Fix: Nav Menu Link user rule not working properly.<\/li>\n<li>Fix: Prevent \u201cRequired Upgrade\u201d notices on new installs.<\/li>\n<li>Tweak: Only show \u201cRequired Upgrade\u201d notices to admins with plugin management permissions.<\/li>\n<li>Dev:: Added new field type <code>userselect<\/code> for choosing users with search.<\/li>\n<\/ul>\n<h4>v2.1.0 \u2013 12\/08\/2023<\/h4>\n<p><strong>NOTE<\/strong>: Plugin now requires PHP 7.4+ &amp; WP 6.2+. The plugin likely still works on older versions, but now only officialy support these versions and up.<\/p>\n<ul>\n<li>Improvement: Preloaded plugin settings on admin pages to decrease delay before settings are available to JS. This should help settings not showing up in the editor when first loading the page.<\/li>\n<li>Tweak: Changed <code>'content_control\/get_block_control_classes'<\/code> filter to include the $controls found in the block.<\/li>\n<li>Tweak: Various style improvements to admin pages for consistency.<\/li>\n<li>Fix: Typo in fetching of taxonomy labels for rule generation. This could have led to rule search results not being shown with proper labels (or empty labels).<\/li>\n<li>Fix: Block scanner running for all users, not just admins, triggered AJAX events that were denied every time author entered block editor.<\/li>\n<li>Fix: Styling issues with WP 6.4 checkbox changes.<\/li>\n<li>Fix: Bug when filtering restrictions in the list view and no results remained, causing the filters to not work properly witoout a page refresh.<\/li>\n<li>Developer: Core plugin class now is extendible to allow addons to get full access to plugin internals.<\/li>\n<li>Developer: Added useFields api which will be used in future versions of the plugin to allow 3rd party plugins to add their own fields to the restriction editor.<\/li>\n<li>Developer: Added multiple new components for field organization and layout: <code>FieldRow<\/code>, <code>FieldPanel<\/code>.<\/li>\n<li>Developer: Added new <code>'content-control.data.registry'<\/code> hook in JavaScript to allow addons to register their own data stores for use in the editor &amp; settings pages.<\/li>\n<li>Developer: Added new <code>'content_control\/restriction\/bypass_user_requirements'<\/code> PHP filter to allow addons to bypass user requirements for more specific restrictions.<\/li>\n<\/ul>\n<h4>v2.0.12 \u2013 10\/26\/2023<\/h4>\n<ul>\n<li>Fix: Prevent extra 301 redirect due to missing trailing slash on some URLs.<\/li>\n<li>Fix: Issue with Custom Message replacement not always working on pages built with Elementor.<\/li>\n<\/ul>\n<h4>v2.0.11 \u2013 10\/04\/2023<\/h4>\n<ul>\n<li>Improvement: Query Monitor integration to show which restrictions are active on a page.\n<ul>\n<li>Shows global settings that may be affecting the page.<\/li>\n<li>Shows which restrictions are active on the page.<\/li>\n<li>Shows which posts are being filtered out of queries and by which restriction.<\/li>\n<\/ul>\n<\/li>\n<li>Tweak: Ensure upgrade stream doesn\u2019t send headers if they were already sent.<\/li>\n<li>Tweak: Make second arg on get_the_excerpt filter optional to prevent errors with some plugins.<\/li>\n<li>Fix: Bug when using <code>content_control\/check_all_restrictions<\/code> filter that caused rules to not compare properly.<\/li>\n<\/ul>\n<h4>v2.0.10 \u2013 10\/01\/2023<\/h4>\n<ul>\n<li>Improvement: If no v1 global restrictions existed, skip the migration step entirely.<\/li>\n<li>Improvement: Default to late init of post query filtering until after plugins_loaded should be finished. This should prevent help prevent random errors due to restrictions being checked before plugins have had a chance to register their post types, and thus restrictions won\u2019t properly match those post type rules.<\/li>\n<li>Improvement: Add check to prevent restriction checks for <strong>WP CLI<\/strong> requests.<\/li>\n<li>Improvement: Add notice to indicate is when waiting for post\/page search results in the restriction editor fields.<\/li>\n<li>Tweak: Fix issue in build that caused autoloader to not fully use optimized classmap, should result in improved performance.<\/li>\n<li>Fix: Ensure <code>$wp_rewrite<\/code> is available before calling <code>is_rest()<\/code> -&gt; <code>get_rest_url()<\/code>. This should prevent errors when using the plugin with <strong>WP CLI<\/strong> and when plugins make <code>WP_Query<\/code> calls during <code>plugins_loaded<\/code>.<\/li>\n<li>Fix: Don\u2019t attempt to initialize side query filtering until after_theme_setup hook. This should prevent errors when plugins make <code>WP_Query<\/code> calls during <code>plugins_loaded<\/code>, and allow further delaying initialization if needed from themes <code>functions.php<\/code> file.<\/li>\n<li>Fix: Backward compatibility issue with WP versions &lt;6.2 that made settings page not render.<\/li>\n<li>Fix: Bug where Block Controls didn\u2019t work on WooCommerce pages. This was filtering <code>pre_render_block<\/code> but not returning a value. Now we run our check after theirs to ensure that bug has no effect on our plugin. <a target=\"_blank\" href=\"https:\/\/github.com\/woocommerce\/woocommerce-blocks\/issues\/11077\" rel=\"nofollow ugc noopener\">Report<\/a><\/li>\n<\/ul>\n<h4>v2.0.9 \u2013 09\/24\/2023<\/h4>\n<ul>\n<li>Improvement: Better handling of restriction titles &amp; content. Admins with priv can insert any content into the restriction messages.<\/li>\n<li>\n<p>Improvement: Added new filter <code>content_control\/query_filter_init_hook<\/code> to allow delaying query filtering for compatibility with plugins that make custom queries before <code>template_redirect<\/code> action.<\/p>\n<p><code>add_filter( 'content_control\/query_filter_init_hook', function () {<br \/>\nreturn 'init'; \/\/ Try setup_theme, after_theme_setup, init or wp_loaded<br \/>\n} );<\/code><\/p>\n<\/li>\n<li>\n<p>Tweak: Ensure our restriction checks work within a nested post loop.<\/p>\n<\/li>\n<li>Tweak: Change how restriction title &amp; descriptions were sent\/received over Rest API.<\/li>\n<li>Fix: Bug that caused some shortcodes to not render properly.<\/li>\n<li>Fix: Bug where override message wasn\u2019t used.<\/li>\n<li>Fix: Bug where Elementor Post loop would render incorrectly when using ACF fields in the loop template.<\/li>\n<\/ul>\n<h4>v2.0.8 \u2013 09\/22\/2023<\/h4>\n<ul>\n<li>Tweak: Ignore many Elementor queries from being restricted.<\/li>\n<li>Fix: Error when required upgrade was marked as complete.<\/li>\n<li>Fix: Bug that caused secondary queries to be handled like main queries.<\/li>\n<\/ul>\n<h4>v2.0.7 \u2013 09\/21\/2023<\/h4>\n<ul>\n<li>Tweak: Only log each unique plugin debug notice once to prevent filling log files quickly.<\/li>\n<li>Tweak: Replace usage of <code>wp_upload_dir<\/code> with <code>wp_get_upload_dir<\/code> which is more performant.<\/li>\n<li>Fix: Error in upgrades when no data is found to migrate.<\/li>\n<li>Fix: Error when function is called early &amp; global $wp_query is not yet available.<\/li>\n<li>Fix: Conditional check that could always return false.<\/li>\n<li>Developer: Implemented PHP Static Analysis to catch more bugs before they happen. Currently clean on lvl 6.<\/li>\n<\/ul>\n<h4>v2.0.6 \u2013 09\/19\/2023<\/h4>\n<ul>\n<li>Improvement: Added data backup step to upgrade process that stores json export in the media library.<\/li>\n<li>Improvement: Better error handling in the data upgrade process.<\/li>\n<li>Fix: Fix bug in data upgrade process that caused it to never finish.<\/li>\n<li>Fix: Possible error when no restriction match found in some custom` queries.<\/li>\n<\/ul>\n<h4>v2.0.5 \u2013 09\/18\/2023<\/h4>\n<ul>\n<li>Fix: Fix errors on some sites with custom conditions due to registering all rules too early.<\/li>\n<\/ul>\n<h4>v2.0.4 \u2013 09\/18\/2023<\/h4>\n<ul>\n<li>Fix: Error when WP Query vars include anonymous function closures.<\/li>\n<\/ul>\n<h4>v2.0.3 \u2013 09\/18\/2023<\/h4>\n<ul>\n<li>Fix: Log errors instead of throwing exceptions to prevent uncaught exceptions turning into fatal errors.<\/li>\n<\/ul>\n<h4>v2.0.2 \u2013 09\/18\/2023<\/h4>\n<ul>\n<li>Fix: Fatal error from error logger on systems without write access.<\/li>\n<\/ul>\n<h4>v2.0.1 \u2013 09\/17\/2023<\/h4>\n<ul>\n<li>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.<\/li>\n<\/ul>\n<h4>v2.0.0 \u2013 09\/17\/2023<\/h4>\n<ul>\n<li>Feature: Restrict individual blocks in the Gutenberg editor.<\/li>\n<li>Feature: Restrict individual blocks in the Full Site Editor.<\/li>\n<li>Feature: Use a custom page template for restricted content.<\/li>\n<li>Feature: Restrict blocks by device type with customizable breakpoints.<\/li>\n<li>Feature: Restrict blocks by user status &amp; role.<\/li>\n<li>Feature: Global restrictions now offer more control over how restricted content is handled.\n<ul>\n<li>Choose to redirect or replace content with a custom page.<\/li>\n<li>Filter or hide posts in archives or custom loops.<\/li>\n<li>Secondary controls for posts if found in an archive.<\/li>\n<\/ul>\n<\/li>\n<li>Improvement: Match or exclude specific roles.<\/li>\n<li>Improvement: Updated interface with intuitive and responsive controls.<\/li>\n<li>Improvement: Boolean editor improvements.<\/li>\n<li>Improvement: Control who can modify plugin settings.<\/li>\n<li>Improvement: Upgraded tooling &amp; Code quality improvements.<\/li>\n<\/ul>\n<h4>v1.1.10 \u2013 12\/28\/2022<\/h4>\n<ul>\n<li>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.<\/li>\n<\/ul>\n<h4>v1.1.9 \u2013 09\/30\/2021<\/h4>\n<ul>\n<li>Fix: Error when using Gutenberg Preview.<\/li>\n<\/ul>\n<h4>v1.1.8 \u2013 07\/17\/2021<\/h4>\n<ul>\n<li>Fix: Error when Elementor instance preview proptery was null.<\/li>\n<\/ul>\n<h4>v1.1.7 \u2013 07\/17\/2021<\/h4>\n<ul>\n<li>Fix: Prevent warning if widget settings don\u2019t exist in options table.<\/li>\n<li>Fix: Arbitrary limit of 10 on current items listed in Restriction Editor due to WP query default args.<\/li>\n<li>Fix: Prevent restrictions from activating when using the Elementor page builder.<\/li>\n<\/ul>\n<h4>v1.1.6 \u2013 03\/21\/2021<\/h4>\n<ul>\n<li>Fix: Nonce validation was preventing 3rd party plugin from saving widget settings when it failed. Thanks @jacobmischka<\/li>\n<li>Fix: Prevent corrupted options from preventing saving of settings.<\/li>\n<\/ul>\n<h4>v1.1.5 \u2013 02\/22\/2021<\/h4>\n<ul>\n<li>Fix: Issue where roles with <code>-<\/code> would not save when checked.<\/li>\n<\/ul>\n<h4>v1.1.4 \u2013 03\/24\/2020<\/h4>\n<ul>\n<li>Improvement: Added gettext handling for several strings that were not translatable.<\/li>\n<li>Tweak: Process shortcodes in default denial message contents.<\/li>\n<li>Tweak: Various improvements in form reliability &amp; user experience.<\/li>\n<li>Fix: Issues with ajax search fields not retaining their values after save.<\/li>\n<li>Fix: Issue where only would show 10 pages.<\/li>\n<li>Fix: PHP 7.4 compatibility fixes.<\/li>\n<\/ul>\n<h4>v1.1.3 \u2013 12\/03\/2019<\/h4>\n<ul>\n<li>Fix: Custom post type conditions were not always registered.<\/li>\n<\/ul>\n<h4>v1.1.2 \u2013 11\/10\/2019<\/h4>\n<ul>\n<li>Tweak: Remove erroneous console.log messages in admin.<\/li>\n<li>Fix: Fatal error when empty shortcode used.<\/li>\n<\/ul>\n<h4>v1.1.1 \u2013 10\/15\/2019<\/h4>\n<ul>\n<li>Fix: Bugs where variables were not always the expected type.<\/li>\n<\/ul>\n<h4>v1.1.0<\/h4>\n<ul>\n<li>Improvement: Added default denial message to shortcode.<\/li>\n<li>Improvement: Render nested shortcodes in the [content_control] shortcode.<\/li>\n<li>Fix: Bug where multiple roles checked together in restriction editor.<\/li>\n<\/ul>\n<h4>v1.0.3<\/h4>\n<ul>\n<li>Fix: Minor notice on activation.<\/li>\n<\/ul>\n<h4>v1.0.2<\/h4>\n<ul>\n<li>Fix: Call to undefined function.<\/li>\n<\/ul>\n<h4>v1.0.1<\/h4>\n<ul>\n<li>Fix: Non static method called statically<\/li>\n<li>Fix: Bug when using invalid variable type.<\/li>\n<\/ul>\n<h4>v1.0.0<\/h4>\n<ul>\n<li>Initial Release<\/li>\n<\/ul>\n<\/div><\/div>\n<p><!-- .entry-content --><\/p>\n<p>\t<!-- .entry-meta --><br \/>\n<\/article>\n<p><br \/>\n<br \/><a href=\"https:\/\/wordpress.org\/plugins\/content-control\/\" target=\"_blank\" rel=\"noopener\">Source link <\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Content Control \u2013 The Ultimate Content Restriction Plugin! Restrict Content, Create Conditional Blocks &amp; More By Code Atlantic Download Live Preview Details Reviews Installation Development Support Description Content Control is a transformative plugin, allowing you to fine-tune every aspect of your WordPress website\u2019s content. Decide who gets to see what, where, and when \u2013 be [&hellip;]<\/p>","protected":false},"author":195,"featured_media":3839,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"give_campaign_id":0,"footnotes":""},"categories":[43,39,40],"tags":[2007,2236,2202,2237,2186,1991,2217,2203,2081],"class_list":["post-3838","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-commercial-plugin","category-lite-version","category-wp-plugin-solution","tag-blocks","tag-conditional","tag-content","tag-control","tag-create","tag-plugin","tag-restrict","tag-restriction","tag-ultimate"],"acf":[],"fifu_image_url":"https:\/\/ps.w.org\/content-control\/assets\/banner-772x250.png?rev=2968104","_links":{"self":[{"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/posts\/3838","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/users\/195"}],"replies":[{"embeddable":true,"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/comments?post=3838"}],"version-history":[{"count":0,"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/posts\/3838\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/media\/3839"}],"wp:attachment":[{"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/media?parent=3838"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/categories?post=3838"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/s-o-s.net\/en_gb\/wp-json\/wp\/v2\/tags?post=3838"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}