From a362fdc3ba5559e1344ac84ada7c6490c2e98f43 Mon Sep 17 00:00:00 2001 From: Daniel Dudzic Date: Thu, 16 May 2024 19:51:47 +0200 Subject: [PATCH 1/2] Ensure the classic cart and checkout check works for the regular WooCommerce shortcodes --- modules/ppcp-axo/src/Assets/AxoManager.php | 2 +- .../src/Helper/CartCheckoutDetector.php | 23 +++++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/modules/ppcp-axo/src/Assets/AxoManager.php b/modules/ppcp-axo/src/Assets/AxoManager.php index 2ed5fc04c..d9b4313fc 100644 --- a/modules/ppcp-axo/src/Assets/AxoManager.php +++ b/modules/ppcp-axo/src/Assets/AxoManager.php @@ -197,7 +197,7 @@ class AxoManager { 'CA' => WC()->countries->get_states( 'CA' ), ), ), - 'module_url' => untrailingslashit( $this->module_url ), + 'module_url' => untrailingslashit( $this->module_url ), ); } diff --git a/modules/ppcp-wc-gateway/src/Helper/CartCheckoutDetector.php b/modules/ppcp-wc-gateway/src/Helper/CartCheckoutDetector.php index faac7f257..253193758 100644 --- a/modules/ppcp-wc-gateway/src/Helper/CartCheckoutDetector.php +++ b/modules/ppcp-wc-gateway/src/Helper/CartCheckoutDetector.php @@ -114,7 +114,7 @@ class CartCheckoutDetector { */ public static function has_classic_checkout(): bool { $checkout_page_id = wc_get_page_id( 'checkout' ); - return $checkout_page_id && has_block( 'woocommerce/classic-shortcode', $checkout_page_id ); + return $checkout_page_id && ( has_block( 'woocommerce/classic-shortcode', $checkout_page_id ) || self::has_classic_shortcode( $checkout_page_id, 'woocommerce_checkout' ) ); } /** @@ -124,6 +124,25 @@ class CartCheckoutDetector { */ public static function has_classic_cart(): bool { $cart_page_id = wc_get_page_id( 'cart' ); - return $cart_page_id && has_block( 'woocommerce/classic-shortcode', $cart_page_id ); + return $cart_page_id && ( has_block( 'woocommerce/classic-shortcode', $cart_page_id ) || self::has_classic_shortcode( $cart_page_id, 'woocommerce_cart' ) ); + } + + /** + * Check if a page has a specific shortcode. + * + * @param int $page_id The ID of the page. + * @param string $shortcode The shortcode to check for. + * + * @return bool + */ + private static function has_classic_shortcode( int $page_id, string $shortcode ): bool { + if ( ! $page_id ) { + return false; + } + + $page = get_post( $page_id ); + $page_content = is_object($page) ? $page->post_content : ''; + + return str_contains( $page_content, $shortcode ); } } From 934da12d6070223f027b70af488ee27e822dfdad Mon Sep 17 00:00:00 2001 From: Daniel Dudzic Date: Thu, 16 May 2024 22:29:26 +0200 Subject: [PATCH 2/2] Fix PHPCS issues --- modules/ppcp-wc-gateway/src/Helper/CartCheckoutDetector.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ppcp-wc-gateway/src/Helper/CartCheckoutDetector.php b/modules/ppcp-wc-gateway/src/Helper/CartCheckoutDetector.php index 253193758..e18fb703e 100644 --- a/modules/ppcp-wc-gateway/src/Helper/CartCheckoutDetector.php +++ b/modules/ppcp-wc-gateway/src/Helper/CartCheckoutDetector.php @@ -141,7 +141,7 @@ class CartCheckoutDetector { } $page = get_post( $page_id ); - $page_content = is_object($page) ? $page->post_content : ''; + $page_content = is_object( $page ) ? $page->post_content : ''; return str_contains( $page_content, $shortcode ); }