diff --git a/assets/js/blocks/product-query/variations/product-query.tsx b/assets/js/blocks/product-query/variations/product-query.tsx
index 73362b8bf0d..cbb923de953 100644
--- a/assets/js/blocks/product-query/variations/product-query.tsx
+++ b/assets/js/blocks/product-query/variations/product-query.tsx
@@ -6,6 +6,8 @@ import { Icon } from '@wordpress/components';
import { __ } from '@wordpress/i18n';
import { stacks } from '@woocommerce/icons';
import { isWpVersion } from '@woocommerce/settings';
+import { isExperimentalBuild } from '@woocommerce/block-settings';
+import { select, subscribe } from '@wordpress/data';
/**
* Internal dependencies
@@ -19,33 +21,58 @@ import {
const VARIATION_NAME = 'woocommerce/product-query';
+const ARCHIVE_PRODUCT_TEMPLATES = [
+ 'woocommerce/woocommerce//archive-product',
+ 'woocommerce/woocommerce//taxonomy-product_cat',
+ 'woocommerce/woocommerce//taxonomy-product_tag',
+ 'woocommerce/woocommerce//taxonomy-product_attribute',
+ 'woocommerce/woocommerce//product-search-results',
+];
+
if ( isWpVersion( '6.1', '>=' ) ) {
- registerBlockVariation( QUERY_LOOP_ID, {
- description: __(
- 'A block that displays a selection of products in your store.',
- 'woo-gutenberg-products-block'
- ),
- name: VARIATION_NAME,
- /* translators: “Products“ is the name of the block. */
- title: __( 'Products (Beta)', 'woo-gutenberg-products-block' ),
- isActive: ( blockAttributes ) =>
- blockAttributes.namespace === VARIATION_NAME,
- icon: (
-
- ),
- attributes: {
- ...QUERY_DEFAULT_ATTRIBUTES,
- namespace: VARIATION_NAME,
- },
- // Gutenberg doesn't support this type yet, discussion here:
- // https://github.com/WordPress/gutenberg/pull/43632
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore
- allowedControls: DEFAULT_ALLOWED_CONTROLS,
- innerBlocks: INNER_BLOCKS_TEMPLATE,
- scope: [ 'inserter' ],
- } );
+ let currentTemplateId: string | undefined;
+
+ if ( isExperimentalBuild() ) {
+ subscribe( () => {
+ const previousTemplateId = currentTemplateId;
+ const store = select( 'core/edit-site' );
+ currentTemplateId = store?.getEditedPostId();
+
+ if ( previousTemplateId === currentTemplateId ) {
+ return;
+ }
+
+ QUERY_DEFAULT_ATTRIBUTES.query.inherit =
+ ARCHIVE_PRODUCT_TEMPLATES.includes( currentTemplateId );
+
+ registerBlockVariation( QUERY_LOOP_ID, {
+ description: __(
+ 'A block that displays a selection of products in your store.',
+ 'woo-gutenberg-products-block'
+ ),
+ name: VARIATION_NAME,
+ /* translators: “Products“ is the name of the block. */
+ title: __( 'Products (Beta)', 'woo-gutenberg-products-block' ),
+ isActive: ( blockAttributes ) =>
+ blockAttributes.namespace === VARIATION_NAME,
+ icon: (
+
+ ),
+ attributes: {
+ ...QUERY_DEFAULT_ATTRIBUTES,
+ namespace: VARIATION_NAME,
+ },
+ // Gutenberg doesn't support this type yet, discussion here:
+ // https://github.com/WordPress/gutenberg/pull/43632
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+ // @ts-ignore
+ allowedControls: DEFAULT_ALLOWED_CONTROLS,
+ innerBlocks: INNER_BLOCKS_TEMPLATE,
+ scope: [ 'inserter' ],
+ } );
+ } );
+ }
}