LLMS_Blocks_Abstract_Block
Abstract Block class.
Source Source
File: libraries/lifterlms-blocks/includes/class-llms-blocks-abstract-block.php
abstract class LLMS_Blocks_Abstract_Block { /** * Block vendor ID. * * @var string */ protected $vendor = 'llms'; /** * Block ID. * * @var string */ protected $id = ''; /** * Is block dynamic (rendered in PHP). * * @var bool */ protected $is_dynamic = false; /** * Constructor. * * @since 1.0.0 * @version 1.0.0 */ public function __construct() { if ( $this->is_dynamic ) { register_block_type( $this->get_block_id(), array( 'attributes' => $this->get_attributes(), 'render_callback' => array( $this, 'render_callback' ), ) ); } $this->register_meta(); } /** * Add hooks stub. * Extending classes can use this class to add hooks attached to the render function action. * * @param array $attributes Optional. Block attributes. Default empty array. * @param string $content Optional. Block content. Default empty string. * @return void * @since 1.0.0 * @version 1.0.0 */ public function add_hooks( $attributes = array(), $content = '' ) {} /** * Retrieve custom block attributes. * Necessary to override when creating ServerSideRender blocks. * * @return array * @since 1.0.0 * @version 1.0.0 */ public function get_attributes() { return LLMS_Blocks_Visibility::get_attributes(); } /** * Retrieve the ID/Name of the block. * * @return string * @since 1.0.0 * @version 1.0.0 */ public function get_block_id() { return sprintf( '%1$s/%2$s', $this->vendor, $this->id ); } /** * Output a message when no HTML was rendered * * @since 1.0.0 * @since 1.8.0 Don't output empty render messages on the frontend. * * @return string */ public function get_empty_render_message() { if ( ! is_admin() ) { return ''; } return __( 'No HTML was returned.', 'lifterlms' ); } /** * Retrieve a string which can be used to render the block. * * @return string * @since 1.0.0 * @version 1.0.0 */ public function get_render_hook() { return sprintf( '%1$s_%2$s_block_render', $this->vendor, $this->id ); } /** * Removed hooks stub. * Extending classes can use this class to remove hooks attached to the render function action. * * @return void * @since 1.0.0 * @version 1.0.0 */ public function remove_hooks() {} /** * Renders the block type output for given attributes. * * @param array $attributes Optional. Block attributes. Default empty array. * @param string $content Optional. Block content. Default empty string. * @return string * @since 1.0.0 * @version 1.0.0 */ public function render_callback( $attributes = array(), $content = '' ) { $this->add_hooks( $attributes, $content ); ob_start(); do_action( $this->get_render_hook(), $attributes, $content ); $ret = ob_get_clean(); $this->remove_hooks(); if ( ! $ret ) { $ret = $this->get_empty_render_message(); } return $ret; } /** * Register meta attributes stub. * * Called after registering the block type. * * @return void * @since 1.0.0 * @version 1.0.0 */ public function register_meta() {} }
Expand full source code Collapse full source code View on GitHub
Methods Methods
- __construct — Constructor.
- add_hooks — Add hooks stub.
- get_attributes — Retrieve custom block attributes.
- get_block_id — Retrieve the ID/Name of the block.
- get_empty_render_message — Output a message when no HTML was rendered
- get_render_hook — Retrieve a string which can be used to render the block.
- register_meta — Register meta attributes stub.
- remove_hooks — Removed hooks stub.
- render_callback — Renders the block type output for given attributes.
Changelog Changelog
Version | Description |
---|---|
1.8.0 | Don't output empty render messages on the frontend. |
1.0.0 | Introduced. |