Fix duplicated Shipping method Block on the front-end (https://github.com/woocommerce/woocommerce-blocks/pull/8861)
* Fix duplicate "Shipping method" Block on the front-end - Issue: When local pickup is enabled and the shipping method's description is edited, the "Shipping method" is duplicated on the front-end - Solution: The previous regex didn't match some special characters such as ".", "!", etc. Because of that, it considers the Local Pickup toggle template to be missing and duplicate it. * Fix the regex looking for block templates The previous regex didn't account for some special characters that the user can use for a block's title or description, such as ".", "!", etc. As a result, the Block's template will be considered missing. --------- Co-authored-by: Niels Lange <info@nielslange.de>
This commit is contained in:
parent
182c58d7d0
commit
30aed1d54b
|
@ -98,7 +98,7 @@ class Cart extends AbstractBlock {
|
||||||
* The blocks used for testing should be always available in the block (not removable by the user).
|
* The blocks used for testing should be always available in the block (not removable by the user).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$regex_for_filled_cart_block = '/<div[\n\r\s\ta-zA-Z0-9_\-=\'"]*data-block-name="woocommerce\/filled-cart-block"[\n\r\s\ta-zA-Z0-9_\-=\'"]*>/mi';
|
$regex_for_filled_cart_block = '/<div[^<]*?data-block-name="woocommerce\/filled-cart-block"[^>]*?>/mi';
|
||||||
// Filled Cart block was added in i2, so we search for it to see if we have a Cart i1 template.
|
// Filled Cart block was added in i2, so we search for it to see if we have a Cart i1 template.
|
||||||
$has_i1_template = ! preg_match( $regex_for_filled_cart_block, $content );
|
$has_i1_template = ! preg_match( $regex_for_filled_cart_block, $content );
|
||||||
|
|
||||||
|
@ -140,8 +140,8 @@ class Cart extends AbstractBlock {
|
||||||
<div data-block-name="woocommerce/cart-order-summary-taxes-block" class="wp-block-woocommerce-cart-order-summary-taxes-block"></div>
|
<div data-block-name="woocommerce/cart-order-summary-taxes-block" class="wp-block-woocommerce-cart-order-summary-taxes-block"></div>
|
||||||
';
|
';
|
||||||
// Order summary subtotal block was added in i3, so we search for it to see if we have a Cart i2 template.
|
// Order summary subtotal block was added in i3, so we search for it to see if we have a Cart i2 template.
|
||||||
$regex_for_order_summary_subtotal = '/<div[\n\r\s\ta-zA-Z0-9_\-=\'"]*data-block-name="woocommerce\/cart-order-summary-subtotal-block"[\n\r\s\ta-zA-Z0-9_\-=\'"]*>/mi';
|
$regex_for_order_summary_subtotal = '/<div[^<]*?data-block-name="woocommerce\/cart-order-summary-subtotal-block"[^>]*?>/mi';
|
||||||
$regex_for_order_summary = '/<div[\n\r\s\ta-zA-Z0-9_\-=\'"]*data-block-name="woocommerce\/cart-order-summary-block"[\n\r\s\ta-zA-Z0-9_\-=\'"]*>/mi';
|
$regex_for_order_summary = '/<div[^<]*?data-block-name="woocommerce\/cart-order-summary-block"[^>]*?>/mi';
|
||||||
$has_i2_template = ! preg_match( $regex_for_order_summary_subtotal, $content );
|
$has_i2_template = ! preg_match( $regex_for_order_summary_subtotal, $content );
|
||||||
|
|
||||||
if ( $has_i2_template ) {
|
if ( $has_i2_template ) {
|
||||||
|
|
|
@ -143,8 +143,8 @@ class Checkout extends AbstractBlock {
|
||||||
<div data-block-name="woocommerce/checkout-order-summary-taxes-block" class="wp-block-woocommerce-checkout-order-summary-taxes-block"></div>
|
<div data-block-name="woocommerce/checkout-order-summary-taxes-block" class="wp-block-woocommerce-checkout-order-summary-taxes-block"></div>
|
||||||
';
|
';
|
||||||
// Order summary subtotal block was added in i3, so we search for it to see if we have a Checkout i2 template.
|
// Order summary subtotal block was added in i3, so we search for it to see if we have a Checkout i2 template.
|
||||||
$regex_for_order_summary_subtotal = '/<div[\n\r\s\ta-zA-Z0-9_\-=\'"]*data-block-name="woocommerce\/checkout-order-summary-subtotal-block"[\n\r\s\ta-zA-Z0-9_\-=\'"]*>/mi';
|
$regex_for_order_summary_subtotal = '/<div[^<]*?data-block-name="woocommerce\/checkout-order-summary-subtotal-block"[^>]*?>/mi';
|
||||||
$regex_for_order_summary = '/<div[\n\r\s\ta-zA-Z0-9_\-=\'"]*data-block-name="woocommerce\/checkout-order-summary-block"[\n\r\s\ta-zA-Z0-9_\-=\'"]*>/mi';
|
$regex_for_order_summary = '/<div[^<]*?data-block-name="woocommerce\/checkout-order-summary-block"[^>]*?>/mi';
|
||||||
$has_i2_template = ! preg_match( $regex_for_order_summary_subtotal, $content );
|
$has_i2_template = ! preg_match( $regex_for_order_summary_subtotal, $content );
|
||||||
|
|
||||||
if ( $has_i2_template ) {
|
if ( $has_i2_template ) {
|
||||||
|
@ -155,11 +155,11 @@ class Checkout extends AbstractBlock {
|
||||||
* Add the Local Pickup toggle to checkouts missing this forced template.
|
* Add the Local Pickup toggle to checkouts missing this forced template.
|
||||||
*/
|
*/
|
||||||
$local_pickup_inner_blocks = '<div data-block-name="woocommerce/checkout-shipping-method-block" class="wp-block-woocommerce-checkout-shipping-method-block"></div>' . PHP_EOL . PHP_EOL . '<div data-block-name="woocommerce/checkout-pickup-options-block" class="wp-block-woocommerce-checkout-pickup-options-block"></div>' . PHP_EOL . PHP_EOL . '$0';
|
$local_pickup_inner_blocks = '<div data-block-name="woocommerce/checkout-shipping-method-block" class="wp-block-woocommerce-checkout-shipping-method-block"></div>' . PHP_EOL . PHP_EOL . '<div data-block-name="woocommerce/checkout-pickup-options-block" class="wp-block-woocommerce-checkout-pickup-options-block"></div>' . PHP_EOL . PHP_EOL . '$0';
|
||||||
$has_local_pickup_regex = '/<div[\n\r\s\ta-zA-Z0-9_\-=\'"]*data-block-name="woocommerce\/checkout-shipping-method-block"[\n\r\s\ta-zA-Z0-9_\-=\'"]*>/mi';
|
$has_local_pickup_regex = '/<div[^<]*?data-block-name="woocommerce\/checkout-shipping-method-block"[^>]*?>/mi';
|
||||||
$has_local_pickup = preg_match( $has_local_pickup_regex, $content );
|
$has_local_pickup = preg_match( $has_local_pickup_regex, $content );
|
||||||
|
|
||||||
if ( ! $has_local_pickup ) {
|
if ( ! $has_local_pickup ) {
|
||||||
$shipping_address_block_regex = '/<div[\n\r\s\ta-zA-Z0-9_\-=\'"]*data-block-name="woocommerce\/checkout-shipping-address-block" class="wp-block-woocommerce-checkout-shipping-address-block"[\n\r\s\ta-zA-Z0-9_\-=\'"]*><\/div>/mi';
|
$shipping_address_block_regex = '/<div[^<]*?data-block-name="woocommerce\/checkout-shipping-address-block" class="wp-block-woocommerce-checkout-shipping-address-block"[^>]*?><\/div>/mi';
|
||||||
$content = preg_replace( $shipping_address_block_regex, $local_pickup_inner_blocks, $content );
|
$content = preg_replace( $shipping_address_block_regex, $local_pickup_inner_blocks, $content );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue