LLMS_Block_Templates::maybe_return_blocks_template( WP_Block_Template|null $template, string $id, array $template_type )
This function checks if there’s a blocks template to return to pre_get_posts short-circuiting the query in Gutenberg.
Description Description
Ultimately it resolves either a saved blocks template from the database or a template file in lifterlms/templates/block-templates/
. Without this it won’t be possible to save llms templates customizations in the DB.
Parameters Parameters
- $template
-
(WP_Block_Template|null) (Required) Return a block template object to short-circuit the default query, or null to allow WP to run its normal queries.
- $id
-
(string) (Required) Template unique identifier (example: theme_slug//template_slug).
- $template_type
-
(array) (Required) wp_template or wp_template_part.
Return Return
(mixed|WP_Block_Template|WP_Error)
Source Source
File: includes/class-llms-block-templates.php
public function maybe_return_blocks_template( $template, $id, $template_type ) { // Bail if 'get_block_template' (introduced in WP 5.9.) doesn't exist, or the requested template is not a 'wp_template' type. if ( ! function_exists( 'get_block_template' ) || 'wp_template' !== $template_type ) { return $template; } $template_name_parts = explode( '//', $id ); if ( count( $template_name_parts ) < 2 ) { return $template; } list( , $slug ) = $template_name_parts; // Remove the filter at this point because if we don't then this function will infinite loop. remove_filter( 'pre_get_block_file_template', array( $this, 'maybe_return_blocks_template' ), 10, 3 ); // Check if the theme has a saved version of this template before falling back to the llms one. $maybe_template = get_block_template( $id, $template_type ); if ( null !== $maybe_template ) { add_filter( 'pre_get_block_file_template', array( $this, 'maybe_return_blocks_template' ), 10, 3 ); return $maybe_template; } // Theme-based template didn't exist, try switching the theme to lifterlms and try again. This function has // been unhooked so won't run again. add_filter( 'get_block_file_template', array( $this, 'get_single_block_template' ), 10, 3 ); $maybe_template = get_block_template( $id, $template_type ); // Re-hook this function, it was only unhooked to stop recursion. add_filter( 'pre_get_block_file_template', array( $this, 'maybe_return_blocks_template' ), 10, 3 ); remove_filter( 'get_block_file_template', array( $this, 'get_single_block_template' ), 10, 3 ); if ( null !== $maybe_template ) { return $maybe_template; } // At this point we haven't had any luck finding a template. Give up and let Gutenberg take control again. return $template; }
Expand full source code Collapse full source code View on GitHub
Changelog Changelog
Version | Description |
---|---|
5.8.0 | Introduced. |