Block Logic – Full Gutenberg Block Display Control

描述

Block Logic adds a “Block Logic” field to the “Advanced” section of the block editor (i.e Gutenberg), that lets you show or hide any block based on conditions. You can use WordPress’ Conditional Tags or any general PHP code.

Show or hide blocks based on

  • User role
  • User login status
  • Post status
  • Date and time
  • The result of a custom PHP function

Features

  • Show or hide any block using conditions
  • Combine conditions with “and” or “or” operators. See FAQ Writing Logic Code
  • Full flexibility: use any condition you want

Configuration

Just activate the plugin. The “Block Logic” textbox will then appear in the “Advanced” section of the Gutenberg editor.

螢幕截圖

  • The 'Block logic' field at work in the block editor.

常見問題

Writing Logic Code

Make good use of WP’s own conditional tags. You can vary and combine code using:

  • ! (not) to reverse the logic, eg !is_home() is TRUE when this is NOT the home page.
  • || (or) to combine conditions. X OR Y is TRUE when either X is true or Y is true.
  • && (and) to make conditions more specific. X AND Y is TRUE when both X is true and Y is true.
  • 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 category with this slug
  • current_user_can('level_10') — admin only blocks
  • strpos($_SERVER['HTTP_REFERER'], "google.com")!=false — blocks to show when clicked through from a google search
  • is_category() && in_array($cat, get_term_children( 5, 'category')) — category page that’s a descendent of category 5
  • global $post; return (in_array(77,get_post_ancestors($post))); — WP page that is a child of page 77
  • global $post; return (is_page('home') || ($post->post_parent=="13")); — home page OR the page that’s a child of page 13

Note the extra ‘;’ on the end where there is an explicit ‘return’.

The ‘block_logic_eval_override’ filter

Before the Block Logic code is evaluated for each block, the text of the Block Logic code is passed through this filter. If the filter returns a BOOLEAN result, this is used instead to determine if the block is visible. Return TRUE for visible.

With great power comes great responsibility

The block logic you introduce is EVAL’d directly. Anyone who has access to use the Gutenberg Editor will have the right to add any code, including malicious and possibly destructive functions. There is an optional filter ‘block_logic_eval_override’ which you can use to bypass the EVAL with your own code if needed.

  • I’m getting “PHP Parse error… … eval()’d code on line 1”

You have a PHP syntax error in one of your block’s “Block Logic” fields. Review them for errors.

評價

2021年7月12日
The best plugin to show or hide blocks and especially block widgets depending on various conditions. I like that it happens server side. The use of conditional tags makes the plugin very flexible and powerful. Nice developer who helped me solve a problem (which turned out to be related to my theme, not the plugin).
2020年11月1日
You can create a membership site with content lock-in easily simply with this plugin along with a few snippets. Really useful plugin. Great work!
2020年10月14日
The most flexible plugin among others. Thank you!
2020年3月7日
This plugin simply works. Ideal for people wanting to show different content based on simple, yet flexible conditions. I use it hide blocks for certain user roles and show some blocks based on the language chosen. Thanks and keep up the good work!
閱讀全部7個評價

貢獻者及開發者

“Block Logic – Full Gutenberg Block Display Control” 是一個開源的軟體。以下的人對這個外掛作出了貢獻。

貢獻者

Block Logic – Full Gutenberg Block Display Control 外掛目前已有 1 個本地化語言版本。 感謝所有譯者為這個外掛做出的貢獻。

將 Block Logic – Full Gutenberg Block Display Control 外掛本地化為台灣繁體中文版。

對開發相關資訊感興趣?

任何人均可瀏覽程式碼、查看 SVN 存放庫,或透過 RSS 訂閱開發記錄

修改日誌

1.0.0

  • Initial Release of the plugin