LLMS_Blocks_PHP_Template_Block
PHP Template block.
Source Source
File: libraries/lifterlms-blocks/includes/blocks/class-llms-blocks-php-template-block.php
class LLMS_Blocks_PHP_Template_Block extends LLMS_Blocks_Abstract_Block { /** * Block ID. * * @var string */ protected $id = 'php-template'; /** * Is block dynamic (rendered in PHP). * * @var bool */ protected $is_dynamic = true; /** * Templates map, where the keys are the template attribute value and the values are the php file names (w/o extension). * * @var array */ protected $templates = array( 'archive-course' => 'loop-main', 'archive-llms_membership' => 'loop-main', 'taxonomy-course_cat' => 'loop-main', 'taxonomy-course_difficulty' => 'loop-main', 'taxonomy-course_tag' => 'loop-main', 'taxonomy-course_track' => 'loop-main', 'taxonomy-membership_cat' => 'loop-main', 'taxonomy-membership_tag' => 'loop-main', 'single-certificate' => 'content-certificate', 'single-no-access' => 'content-no-access', ); /** * Add actions attached to the render function action. * * @since 2.3.0 * * @param array $attributes Optional. Block attributes. Default empty array. * @param string $content Optional. Block content. Default empty string. * @return void */ public function add_hooks( $attributes = array(), $content = '' ) { add_action( $this->get_render_hook(), array( $this, 'output' ), 10 ); } /** * Retrieve custom block attributes. * * Necessary to override when creating ServerSideRender blocks. * * @since 2.3.0 * * @return array */ public function get_attributes() { return array( 'template' => array( 'type' => 'string', 'default' => '', ), 'title' => array( 'type' => 'string', 'default' => '', ), ); } /** * Output the template. * * @since 2.3.0 * * @param array $attributes Optional. Block attributes. Default empty array. * @return void */ public function output( $attributes = array() ) { if ( empty( $attributes['template'] ) ) { return; } /** * Filters the php templates that can be render via this block. * * @since 2.3.0 * * @param array $templates Templates map, where the keys are the template attribute value and the values are the php file names (w/o extension). */ $templates = apply_filters( 'llms_blocks_php_templates_block', $this->templates ); if ( ! array_key_exists( $attributes['template'], $templates ) ) { return; } ob_start(); llms_get_template( "{$templates[$attributes['template']]}.php" ); $block_content = ob_get_clean(); /** * Filters the block html. * * @since 2.3.0 * * @param string $block_content The block's html. * @param array $attributes The block's array of attributes. * @param array $template The template file basename to be rendered. * @param LLMS_Blocks_PHP_Template_Block $block This block object. */ $block_content = apply_filters( 'llms_blocks_render_php_template_block', $block_content, $attributes, $templates[ $attributes['template'] ], $this ); if ( $block_content ) { echo $block_content; } } }
Expand full source code Collapse full source code View on GitHub
Methods Methods
- add_hooks — Add actions attached to the render function action.
- get_attributes — Retrieve custom block attributes.
- output — Output the template.
Changelog Changelog
Version | Description |
---|---|
2.3.0 | Introduced. |