Block Logic - Full Block Display Control
by Sascha Paukner 5 (13 reviews)

Block Logic - Full Block Display Control

Block Logic adds a "Block Logic" field to the block editor, that lets you show or hide any block based on conditions.

Compatible with WP 6.9
v2.1.5 Current Version v2.1.5
Updated 2 weeks ago Last Update on 05 Jan, 2026
Synced 15 hours ago Last Synced on
Rank
#10,582
No change
Active Installs
300+
No change
KW Avg Position
N/A
No change
Downloads
5.1K
+5 today
Support Resolved
0%
No change
Rating
100%
Review 5 out of 5
5 (13 reviews)

Next Milestone 400

Total Progress 81%
300+ 400+
231
Ranks to Climb
-
Growth Needed
8,000,000
Active Installs
Pro

Unlock Exact Install Count

See the precise estimated active installs for this plugin, calculated from real-time ranking data.

  • Exact install estimates within tiers
  • Track install growth over time
  • Milestone progress predictions
Upgrade to Pro
Need 19 more installs to reach 400+

Rank Changes

10,534 10,548 10,562 10,575 10,589 15-01-2026 16-01-2026 17-01-2026 18-01-2026 19-01-2026 20-01-2026 21-01-2026 22-01-2026
10,531 10,551 10,571 10,591 10,611 07-01-2026 08-01-2026 09-01-2026 10-01-2026 11-01-2026 12-01-2026 13-01-2026 14-01-2026 15-01-2026 16-01-2026 17-01-2026 18-01-2026 19-01-2026 20-01-2026 21-01-2026 22-01-2026
10,487 10,520 10,552 10,585 10,617 23-12-2025 24-12-2025 25-12-2025 26-12-2025 27-12-2025 28-12-2025 29-12-2025 30-12-2025 31-12-2025 01-01-2026 02-01-2026 03-01-2026 04-01-2026 05-01-2026 06-01-2026 07-01-2026 08-01-2026 09-01-2026 10-01-2026 11-01-2026 12-01-2026 13-01-2026 14-01-2026 15-01-2026 16-01-2026 17-01-2026 18-01-2026 19-01-2026 20-01-2026 21-01-2026 22-01-2026
10,487 10,520 10,552 10,585 10,617 24-10-2025 25-10-2025 26-10-2025 27-10-2025 28-10-2025 29-10-2025 30-10-2025 31-10-2025 01-11-2025 02-11-2025 03-11-2025 04-11-2025 05-11-2025 06-11-2025 07-11-2025 08-11-2025 09-11-2025 10-11-2025 11-11-2025 12-11-2025 13-11-2025 14-11-2025 15-11-2025 16-11-2025 17-11-2025 18-11-2025 19-11-2025 20-11-2025 21-11-2025 22-11-2025 23-11-2025 24-11-2025 25-11-2025 26-11-2025 27-11-2025 28-11-2025 29-11-2025 30-11-2025 01-12-2025 02-12-2025 03-12-2025 04-12-2025 05-12-2025 06-12-2025 07-12-2025 08-12-2025 09-12-2025 10-12-2025 11-12-2025 12-12-2025 13-12-2025 14-12-2025 15-12-2025 16-12-2025 17-12-2025 18-12-2025 19-12-2025 20-12-2025 21-12-2025 22-12-2025 23-12-2025 24-12-2025 25-12-2025 26-12-2025 27-12-2025 28-12-2025 29-12-2025 30-12-2025 31-12-2025 01-01-2026 02-01-2026 03-01-2026 04-01-2026 05-01-2026 06-01-2026 07-01-2026 08-01-2026 09-01-2026 10-01-2026 11-01-2026 12-01-2026 13-01-2026 14-01-2026 15-01-2026 16-01-2026 17-01-2026 18-01-2026 19-01-2026 20-01-2026 21-01-2026 22-01-2026
Current #10,582
Change
Best #

Upgrade to Pro

Unlock 30-day and 90-day rank history charts with a Pro subscription.

Upgrade Now

Active Installs Growth

Active Installs 0,000,000+
Growth +0.0%
Peak 0,000,000

Downloads Growth

0 10 15-01-2026 16-01-2026 17-01-2026 18-01-2026 19-01-2026 20-01-2026 21-01-2026 22-01-2026
0 10 20 07-01-2026 08-01-2026 09-01-2026 10-01-2026 11-01-2026 12-01-2026 13-01-2026 14-01-2026 15-01-2026 16-01-2026 17-01-2026 18-01-2026 19-01-2026 20-01-2026 21-01-2026 22-01-2026
0 50 100 150 23-12-2025 24-12-2025 25-12-2025 26-12-2025 27-12-2025 28-12-2025 29-12-2025 30-12-2025 31-12-2025 01-01-2026 02-01-2026 03-01-2026 04-01-2026 05-01-2026 06-01-2026 07-01-2026 08-01-2026 09-01-2026 10-01-2026 11-01-2026 12-01-2026 13-01-2026 14-01-2026 15-01-2026 16-01-2026 17-01-2026 18-01-2026 19-01-2026 20-01-2026 21-01-2026 22-01-2026
0 50 100 150 24-10-2025 27-10-2025 30-10-2025 02-11-2025 05-11-2025 08-11-2025 11-11-2025 14-11-2025 17-11-2025 20-11-2025 23-11-2025 26-11-2025 29-11-2025 02-12-2025 05-12-2025 08-12-2025 11-12-2025 14-12-2025 17-12-2025 20-12-2025 23-12-2025 26-12-2025 29-12-2025 01-01-2026 04-01-2026 07-01-2026 10-01-2026 13-01-2026 16-01-2026 19-01-2026 22-01-2026
0 50 100 150 22-01-2025 03-02-2025 15-02-2025 27-02-2025 11-03-2025 23-03-2025 04-04-2025 16-04-2025 28-04-2025 10-05-2025 22-05-2025 03-06-2025 15-06-2025 27-06-2025 09-07-2025 21-07-2025 02-08-2025 14-08-2025 26-08-2025 07-09-2025 19-09-2025 01-10-2025 13-10-2025 25-10-2025 06-11-2025 18-11-2025 30-11-2025 12-12-2025 24-12-2025 05-01-2026 17-01-2026 22-01-2026
Downloads
Growth
Peak

Upgrade to Pro

Unlock 30-day, 90-day, and yearly download history charts with a Pro subscription.

Upgrade Now

Reviews & Ratings

5.0
13 reviews
Overall 100%
5
13 (100%)
4
0 (0%)
3
0 (0%)
2
0 (0%)
1
0 (0%)

Tracked Keywords

Showing 0 of 0
Keyword Position Change Type Updated
No keyword data available yet.

Unlock Keyword Analytics

Track keyword rankings, search positions, and discover new ranking opportunities with a Pro subscription.

  • Full keyword position tracking
  • Historical ranking data
  • Competitor keyword analysis
Upgrade to Pro

Track This Plugin

Get detailed analytics, keyword tracking, and position alerts delivered to your inbox.

Start Tracking Free

Plugin Details

Version
2.1.5
Last Updated
Jan 05, 2026
Requires WP
6.5+
Tested Up To
6.9
PHP Version
5.6 or higher

Support & Rating

Rating
★ ★ ★ ★ ★ 5
Reviews
13
Support Threads
0
Resolved
0%

Keywords

Upgrade to Pro

Unlock keyword rankings, search positions, and detailed analytics with a Pro subscription.

Upgrade Now

Frequently Asked Questions

Common questions about Block Logic - Full Block Display Control

Operators

! (not) to reverse the logic, eg !is_home() is TRUE when this is NOT the home page.
|| (or) to combine conditions. X || Y is TRUE when either X or Y is true.
&& (and) to make conditions more specific. X && Y is TRUE when both X and Y are true.

WordPress Conditional Checks

is_home() -- just the main blog page
!is_page('about') -- everywhere except this specific WP page
is_user_logged_in() -- shown when a user is logged in
is_category(array(5,9,10,11)) -- category page of one of the given category IDs
is_single() && in_category('baked-goods') -- single post that’s in the “baked-goods” category
current_user_can('administrator') -- admin-only blocks
strpos($_SERVER['HTTP_REFERER'], "google.com") !== false -- blocks to show when clicked through from Google
is_category() && in_array($cat, get_term_children(5, 'category')) -- category page that’s a descendant of category 5
in_array(77, get_post_ancestors($post)) -- WP page that is a child of page 77
is_page('home') || $post->post_parent == 13 -- home page or the page that’s a child of page 13

WordPress Post & Term Checks

has_term('special-offer', 'category', $post) -- post has a specific category term
get_post_meta(get_the_ID(), 'featured', true) == 'yes' -- check a meta field value
get_post_type() == 'product' -- current post type is a WooCommerce product
is_sticky() -- sticky posts only
has_post_thumbnail() -- only posts/pages with a featured image
get_the_category() -- fetch post categories (can be used in expressions)
get_the_tags() -- fetch post tags

WooCommerce-Specific Checks

WC()->cart && WC()->cart->get_cart_contents_count() > 0 -- cart has at least one item
WC()->cart && WC()->cart->total > 50 -- cart total is more than $50
is_product() && get_post_meta(get_the_ID(), '_sale_price', true) !== '' -- product has a sale price
is_product_category('shoes') && WC()->cart -- category page “shoes” and cart exists
is_user_logged_in() && WC()->cart && WC()->cart->get_cart_contents_count() > 0 -- logged-in user and cart has items

ACF Checks (Read-only)

get_field('featured') == true -- ACF field “featured” is true
get_sub_field('discount') > 0 -- ACF subfield “discount” has a value
get_row() > 0 -- there are ACF repeater rows
get_field_object('product_info')['value'] !== '' -- check ACF field object value

PHP Helpers

in_array('baked-goods', wp_get_post_categories($post)) -- category array check
strpos(get_permalink($post), 'sale') !== false -- check if permalink contains “sale”
empty(get_post_meta(get_the_ID(), 'stock', true)) -- post has no stock meta
count(WC()->cart->get_cart()) > 1 -- more than 1 item in cart
time() > strtotime('2026-01-01') -- check current timestamp
number_format(WC()->cart->total, 2) -- format cart total
round(get_post_meta(get_the_ID(), 'rating', true)) > 4 -- rating is greater than 4

Supported functions and globals
Block Logic comes with a set of safe WordPress, WooCommerce, ACF, and PHP helper functions, as well as selected globals and superglobals. These can be used in block logic expressions to control the display of blocks dynamically.

Allowed Superglobals

By default, only safe, read-only superglobals are available. Developers can extend this list via the block_logic_allowed_superglobals filter.

$_GET -- query parameters
$_POST -- submitted form data
$_SERVER -- server/environment info (e.g., $_SERVER['HTTP_REFERER'])
$_COOKIE -- cookies

Example usage:

!empty($_GET['ref']) && strpos($_SERVER['HTTP_REFERER'], 'google.com') !== false

Allowed WordPress Globals

These global variables are accessible inside block logic expressions. Extend the list via the block_logic_allowed_globals filter.

$post -- current post object
$wp_query -- main query object
$wp_the_query -- backup of main query
$wp -- WP environment object
$wp_rewrite -- rewrite rules
$current_user -- WP_User object of the current user
$wp_version -- WordPress version

Example usage:

in_array($post->ID, get_post_ancestors($post)) && is_user_logged_in()

Allowed WordPress Functions

Overview

current_user_can('administrator') -- check user capabilities
get_current_user_id() -- current user ID
get_option('blogname') -- get site title
get_post_meta(get_the_ID(), 'featured', true) -- read post meta
get_post_type() -- post type slug
get_the_ID() -- current post ID
has_post_thumbnail() -- check if post has featured image
is_page('about') -- check if current page is "about"

Example usage:
ACF Functions

Overview

get_field('featured') -- read ACF field value
get_sub_field('discount') -- read subfield in repeater
get_row() -- number of repeater rows
get_field_object('product_info')['value'] -- field object value

Example usage:

get_field('featured') == true && get_sub_field('discount') > 0

WooCommerce Functions

Overview

wc_get_cart_contents_count() -- number of items in cart
wc_get_cart_total() -- cart total
wc_get_cart_subtotal() -- cart subtotal
wc_cart_is_empty() -- TRUE if cart is empty
wc_customer_get_id() -- current customer ID
wc_customer_get_billing_email() -- customer billing email
wc_customer_get_shipping_country() -- shipping country
wc_customer_get_shipping_state() -- shipping state
wc_customer_get_shipping_postcode() -- shipping postcode
wc_get_product($product_id) -- get WC_Product object

Example usage:

wc_get_cart_contents_count() > 0 && wc_get_cart_total() > 50

PHP Helpers

Overview

strpos($haystack, $needle)
in_array($needle, $array)
empty($var)
isset($var)
count($array)
strlen($string)
preg_match($pattern, $subject)
current_time('timestamp')
strtotime($string)
date($format, $timestamp)
time()
number_format($number, $decimals)
round($number)

Example usage:

count(WC()->cart->get_cart()) > 1 && time() > strtotime('2026-01-01')

Extending the list of allowed functions
Block Logic provides four filters that developers can use to safely extend which functions, globals, and superglobals are available inside block logic expressions.

Add custom functions

Use the block_logic_allowed_functions filter to make additional functions available in block logic expressions.
Example

add_filter('block_logic_allowed_functions', function($allowed) {
$allowed[] = 'my_cart_has_items';
return $allowed;
});

function my_cart_has_items() {
return WC()->cart && WC()->cart->get_cart_contents_count() > 0;
}

Usage in a block logic field:

my_cart_has_items()

Add extra superglobals

Use the block_logic_allowed_superglobals filter to allow additional superglobals like $_SESSION.
Example:

add_filter('block_logic_allowed_superglobals', function($allowed) {
$allowed[] = '_SESSION';
return $allowed;
});

Usage in a block logic field:

!empty($_SESSION['special_offer'])

Add extra WordPress globals

Use the block_logic_allowed_globals filter to allow extra global variables.
Example:

add_filter('block_logic_allowed_globals', function($allowed) {
$allowed[] = 'my_global_data';
return $allowed;
});

// Somewhere in your theme or plugin
$GLOBALS['my_global_data'] = ['foo' => 'bar'];

Usage in a block logic field:

$post->ID == my_global_data['foo']

Add completely custom globals

Use the block_logic_extra_globals filter to allow any additional global variable in block logic expressions.
Example:

add_filter('block_logic_extra_globals', function($allowed) {
$allowed[] = 'my_custom_flag';
return $allowed;
});

// Initialize the global somewhere
$GLOBALS['my_custom_flag'] = true;

Usage in a block logic field:

$my_custom_flag && is_user_logged_in()

Sign In / Register

You need to sign in or register to use this feature.