Conditionally initialize block template compatibility classes (#50785)
* Don't initialize the block template compatibility classes in classic themes * Conditionally initialize the block template compatibility classes when the template is being rendered * Add changelog file * Remove unnecessary blank line * Conditionally initialize the block template compatibility classes when the template is being rendered (II)
This commit is contained in:
parent
055cf09cc1
commit
b7c4c68598
|
@ -0,0 +1,4 @@
|
||||||
|
Significance: patch
|
||||||
|
Type: performance
|
||||||
|
|
||||||
|
Conditionally initialize block template compatibility classes
|
|
@ -169,8 +169,6 @@ class Bootstrap {
|
||||||
$this->container->get( BlockPatterns::class );
|
$this->container->get( BlockPatterns::class );
|
||||||
$this->container->get( BlockTypesController::class );
|
$this->container->get( BlockTypesController::class );
|
||||||
$this->container->get( ClassicTemplatesCompatibility::class );
|
$this->container->get( ClassicTemplatesCompatibility::class );
|
||||||
$this->container->get( ArchiveProductTemplatesCompatibility::class )->init();
|
|
||||||
$this->container->get( SingleProductTemplateCompatibility::class )->init();
|
|
||||||
$this->container->get( Notices::class )->init();
|
$this->container->get( Notices::class )->init();
|
||||||
$this->container->get( PTKPatternsStore::class );
|
$this->container->get( PTKPatternsStore::class );
|
||||||
$this->container->get( TemplateOptions::class )->init();
|
$this->container->get( TemplateOptions::class )->init();
|
||||||
|
@ -276,18 +274,6 @@ class Bootstrap {
|
||||||
return new ClassicTemplatesCompatibility( $asset_data_registry );
|
return new ClassicTemplatesCompatibility( $asset_data_registry );
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
$this->container->register(
|
|
||||||
ArchiveProductTemplatesCompatibility::class,
|
|
||||||
function () {
|
|
||||||
return new ArchiveProductTemplatesCompatibility();
|
|
||||||
}
|
|
||||||
);
|
|
||||||
$this->container->register(
|
|
||||||
SingleProductTemplateCompatibility::class,
|
|
||||||
function () {
|
|
||||||
return new SingleProductTemplateCompatibility();
|
|
||||||
}
|
|
||||||
);
|
|
||||||
$this->container->register(
|
$this->container->register(
|
||||||
DraftOrders::class,
|
DraftOrders::class,
|
||||||
function ( Container $container ) {
|
function ( Container $container ) {
|
||||||
|
|
|
@ -21,10 +21,6 @@ abstract class AbstractTemplateCompatibility {
|
||||||
* Initialization method.
|
* Initialization method.
|
||||||
*/
|
*/
|
||||||
public function init() {
|
public function init() {
|
||||||
if ( ! wc_current_theme_is_fse_theme() ) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->set_hook_data();
|
$this->set_hook_data();
|
||||||
|
|
||||||
add_filter(
|
add_filter(
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
namespace Automattic\WooCommerce\Blocks\Templates;
|
namespace Automattic\WooCommerce\Blocks\Templates;
|
||||||
|
|
||||||
|
use Automattic\WooCommerce\Blocks\Templates\ArchiveProductTemplatesCompatibility;
|
||||||
use Automattic\WooCommerce\Blocks\Utils\BlockTemplateUtils;
|
use Automattic\WooCommerce\Blocks\Utils\BlockTemplateUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -61,6 +62,9 @@ class ProductAttributeTemplate extends AbstractTemplate {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isset( $queried_object->taxonomy ) && taxonomy_is_product_attribute( $queried_object->taxonomy ) ) {
|
if ( isset( $queried_object->taxonomy ) && taxonomy_is_product_attribute( $queried_object->taxonomy ) ) {
|
||||||
|
$compatibility_layer = new ArchiveProductTemplatesCompatibility();
|
||||||
|
$compatibility_layer->init();
|
||||||
|
|
||||||
$templates = get_block_templates( array( 'slug__in' => array( self::SLUG ) ) );
|
$templates = get_block_templates( array( 'slug__in' => array( self::SLUG ) ) );
|
||||||
|
|
||||||
if ( isset( $templates[0] ) && BlockTemplateUtils::template_has_legacy_template_block( $templates[0] ) ) {
|
if ( isset( $templates[0] ) && BlockTemplateUtils::template_has_legacy_template_block( $templates[0] ) ) {
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
namespace Automattic\WooCommerce\Blocks\Templates;
|
namespace Automattic\WooCommerce\Blocks\Templates;
|
||||||
|
|
||||||
|
use Automattic\WooCommerce\Blocks\Templates\ArchiveProductTemplatesCompatibility;
|
||||||
use Automattic\WooCommerce\Blocks\Utils\BlockTemplateUtils;
|
use Automattic\WooCommerce\Blocks\Utils\BlockTemplateUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -49,6 +50,9 @@ class ProductCatalogTemplate extends AbstractTemplate {
|
||||||
*/
|
*/
|
||||||
public function render_block_template() {
|
public function render_block_template() {
|
||||||
if ( ! is_embed() && ( is_post_type_archive( 'product' ) || is_page( wc_get_page_id( 'shop' ) ) ) ) {
|
if ( ! is_embed() && ( is_post_type_archive( 'product' ) || is_page( wc_get_page_id( 'shop' ) ) ) ) {
|
||||||
|
$compatibility_layer = new ArchiveProductTemplatesCompatibility();
|
||||||
|
$compatibility_layer->init();
|
||||||
|
|
||||||
$templates = get_block_templates( array( 'slug__in' => array( self::SLUG ) ) );
|
$templates = get_block_templates( array( 'slug__in' => array( self::SLUG ) ) );
|
||||||
|
|
||||||
if ( isset( $templates[0] ) && BlockTemplateUtils::template_has_legacy_template_block( $templates[0] ) ) {
|
if ( isset( $templates[0] ) && BlockTemplateUtils::template_has_legacy_template_block( $templates[0] ) ) {
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
namespace Automattic\WooCommerce\Blocks\Templates;
|
namespace Automattic\WooCommerce\Blocks\Templates;
|
||||||
|
|
||||||
|
use Automattic\WooCommerce\Blocks\Templates\ArchiveProductTemplatesCompatibility;
|
||||||
use Automattic\WooCommerce\Blocks\Utils\BlockTemplateUtils;
|
use Automattic\WooCommerce\Blocks\Utils\BlockTemplateUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -55,6 +56,9 @@ class ProductCategoryTemplate extends AbstractTemplate {
|
||||||
*/
|
*/
|
||||||
public function render_block_template() {
|
public function render_block_template() {
|
||||||
if ( ! is_embed() && is_product_taxonomy() && is_tax( 'product_cat' ) ) {
|
if ( ! is_embed() && is_product_taxonomy() && is_tax( 'product_cat' ) ) {
|
||||||
|
$compatibility_layer = new ArchiveProductTemplatesCompatibility();
|
||||||
|
$compatibility_layer->init();
|
||||||
|
|
||||||
$templates = get_block_templates( array( 'slug__in' => array( self::SLUG ) ) );
|
$templates = get_block_templates( array( 'slug__in' => array( self::SLUG ) ) );
|
||||||
|
|
||||||
if ( isset( $templates[0] ) && BlockTemplateUtils::template_has_legacy_template_block( $templates[0] ) ) {
|
if ( isset( $templates[0] ) && BlockTemplateUtils::template_has_legacy_template_block( $templates[0] ) ) {
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
namespace Automattic\WooCommerce\Blocks\Templates;
|
namespace Automattic\WooCommerce\Blocks\Templates;
|
||||||
|
|
||||||
|
use Automattic\WooCommerce\Blocks\Templates\ArchiveProductTemplatesCompatibility;
|
||||||
use Automattic\WooCommerce\Blocks\Utils\BlockTemplateUtils;
|
use Automattic\WooCommerce\Blocks\Utils\BlockTemplateUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -48,6 +49,9 @@ class ProductSearchResultsTemplate extends AbstractTemplate {
|
||||||
*/
|
*/
|
||||||
public function render_block_template() {
|
public function render_block_template() {
|
||||||
if ( ! is_embed() && is_post_type_archive( 'product' ) && is_search() ) {
|
if ( ! is_embed() && is_post_type_archive( 'product' ) && is_search() ) {
|
||||||
|
$compatibility_layer = new ArchiveProductTemplatesCompatibility();
|
||||||
|
$compatibility_layer->init();
|
||||||
|
|
||||||
$templates = get_block_templates( array( 'slug__in' => array( self::SLUG ) ) );
|
$templates = get_block_templates( array( 'slug__in' => array( self::SLUG ) ) );
|
||||||
|
|
||||||
if ( isset( $templates[0] ) && BlockTemplateUtils::template_has_legacy_template_block( $templates[0] ) ) {
|
if ( isset( $templates[0] ) && BlockTemplateUtils::template_has_legacy_template_block( $templates[0] ) ) {
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
namespace Automattic\WooCommerce\Blocks\Templates;
|
namespace Automattic\WooCommerce\Blocks\Templates;
|
||||||
|
|
||||||
|
use Automattic\WooCommerce\Blocks\Templates\ArchiveProductTemplatesCompatibility;
|
||||||
use Automattic\WooCommerce\Blocks\Utils\BlockTemplateUtils;
|
use Automattic\WooCommerce\Blocks\Utils\BlockTemplateUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -55,6 +56,9 @@ class ProductTagTemplate extends AbstractTemplate {
|
||||||
*/
|
*/
|
||||||
public function render_block_template() {
|
public function render_block_template() {
|
||||||
if ( ! is_embed() && is_product_taxonomy() && is_tax( 'product_tag' ) ) {
|
if ( ! is_embed() && is_product_taxonomy() && is_tax( 'product_tag' ) ) {
|
||||||
|
$compatibility_layer = new ArchiveProductTemplatesCompatibility();
|
||||||
|
$compatibility_layer->init();
|
||||||
|
|
||||||
$templates = get_block_templates( array( 'slug__in' => array( self::SLUG ) ) );
|
$templates = get_block_templates( array( 'slug__in' => array( self::SLUG ) ) );
|
||||||
|
|
||||||
if ( isset( $templates[0] ) && BlockTemplateUtils::template_has_legacy_template_block( $templates[0] ) ) {
|
if ( isset( $templates[0] ) && BlockTemplateUtils::template_has_legacy_template_block( $templates[0] ) ) {
|
||||||
|
|
|
@ -51,6 +51,9 @@ class SingleProductTemplate extends AbstractTemplate {
|
||||||
if ( ! is_embed() && is_singular( 'product' ) ) {
|
if ( ! is_embed() && is_singular( 'product' ) ) {
|
||||||
global $post;
|
global $post;
|
||||||
|
|
||||||
|
$compatibility_layer = new SingleProductTemplateCompatibility();
|
||||||
|
$compatibility_layer->init();
|
||||||
|
|
||||||
$valid_slugs = array( self::SLUG );
|
$valid_slugs = array( self::SLUG );
|
||||||
$single_product_slug = 'product' === $post->post_type && $post->post_name ? 'single-product-' . $post->post_name : '';
|
$single_product_slug = 'product' === $post->post_type && $post->post_name ? 'single-product-' . $post->post_name : '';
|
||||||
if ( $single_product_slug ) {
|
if ( $single_product_slug ) {
|
||||||
|
|
|
@ -14,7 +14,6 @@ class SingleProductTemplateCompatibility extends AbstractTemplateCompatibility {
|
||||||
const IS_FIRST_BLOCK = '__wooCommerceIsFirstBlock';
|
const IS_FIRST_BLOCK = '__wooCommerceIsFirstBlock';
|
||||||
const IS_LAST_BLOCK = '__wooCommerceIsLastBlock';
|
const IS_LAST_BLOCK = '__wooCommerceIsLastBlock';
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inject hooks to rendered content of corresponding blocks.
|
* Inject hooks to rendered content of corresponding blocks.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue