The get_block_template WordPress PHP filter allows you to modify the block template object after it’s been fetched.
Usage
add_filter( 'get_block_template', 'your_custom_function', 10, 3 ); function your_custom_function( $block_template, $id, $template_type ) { // your custom code here return $block_template; }
Parameters
$block_template
(WP_Block_Template|null) – The found block template, or null if there isn’t one.$id
(string) – Template unique identifier (example: theme_slug//template_slug).$template_type
(array) – Template type: ‘wp_template’ or ‘wp_template_part’.
More information
See WordPress Developer Resources: get_block_template
Examples
Change block template content
Modify the block template content before it’s rendered.
add_filter( 'get_block_template', 'change_block_template_content', 10, 3 ); function change_block_template_content( $block_template, $id, $template_type ) { // Modify content if the template type is 'wp_template' if ( $template_type === 'wp_template' ) { $block_template->content = str_replace( 'old_text', 'new_text', $block_template->content ); } return $block_template; }
Add a custom class to block template
Add a custom class to the block template’s HTML.
add_filter( 'get_block_template', 'add_custom_class_to_block_template', 10, 3 ); function add_custom_class_to_block_template( $block_template, $id, $template_type ) { // Add custom class to the block template $block_template->html = str_replace( 'class="', 'class="custom-class ', $block_template->html ); return $block_template; }
Exclude specific block template by ID
Prevent a specific block template from being used.
add_filter( 'get_block_template', 'exclude_specific_block_template', 10, 3 ); function exclude_specific_block_template( $block_template, $id, $template_type ) { // Exclude the block template with specific ID if ( $id === 'theme_slug//template_slug' ) { return null; } return $block_template; }
Modify block template based on user role
Change the block template depending on the user’s role.
add_filter( 'get_block_template', 'modify_block_template_for_user_role', 10, 3 ); function modify_block_template_for_user_role( $block_template, $id, $template_type ) { // Get the current user $user = wp_get_current_user(); // If user has the 'subscriber' role, modify the block template if ( in_array( 'subscriber', $user->roles ) ) { $block_template->content = str_replace( 'old_text', 'subscriber_text', $block_template->content ); } return $block_template; }
Change block template for a specific post type
Modify the block template for a specific post type.
add_filter( 'get_block_template', 'change_block_template_for_post_type', 10, 3 ); function change_block_template_for_post_type( $block_template, $id, $template_type ) { // Get the current post type $post_type = get_post_type(); // If the post type is 'custom_post_type', modify the block template if ( $post_type === 'custom_post_type' ) { $block_template->content = str_replace( 'old_text', 'custom_post_type_text', $block_template->content ); } return $block_template; }