FileMaster
Search
Toggle Dark Mode
Home
/
.
/
wp-content
/
plugins
/
woocommerce
/
src
/
Blocks
/
Templates
Edit File: AbstractTemplateWithFallback.php
<?php declare( strict_types=1 ); namespace Automattic\WooCommerce\Blocks\Templates; use Automattic\WooCommerce\Blocks\Utils\BlockTemplateUtils; /** * AbstractTemplateWithFallback class. * * Shared logic for templates with fallbacks. * * @internal */ abstract class AbstractTemplateWithFallback extends AbstractTemplate { /** * The fallback template to render if the existing template is not available. * * @var string */ public string $fallback_template; /** * Initialization method. */ public function init() { add_filter( 'taxonomy_template_hierarchy', array( $this, 'template_hierarchy' ), 1 ); add_action( 'template_redirect', array( $this, 'render_block_template' ) ); } /** * Add the fallback template to the hierarchy, right after the current template. * * @param array $templates Templates that match the taxonomy_template_hierarchy. */ public function template_hierarchy( $templates ) { $index = array_search( static::SLUG, $templates, true ); if ( false === $index ) { $index = array_search( static::SLUG . '.php', $templates, true ); } if ( false !== $index && ( ! array_key_exists( $index + 1, $templates ) || $templates[ $index + 1 ] !== $this->fallback_template ) ) { array_splice( $templates, $index + 1, 0, $this->fallback_template ); } return $templates; } /** * Render the block template. */ abstract public function render_block_template(); }
Save
Back