From 975660d905825db274d6bdf353ab77bff13faa79 Mon Sep 17 00:00:00 2001
From: Philipp Stracker
Date: Fri, 20 Sep 2024 16:52:28 +0200
Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Hide=20shipping=20options=20for?=
=?UTF-8?q?=20non-physical=20products?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
modules/ppcp-googlepay/src/Assets/Button.php | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/modules/ppcp-googlepay/src/Assets/Button.php b/modules/ppcp-googlepay/src/Assets/Button.php
index 575def21f..43f783675 100644
--- a/modules/ppcp-googlepay/src/Assets/Button.php
+++ b/modules/ppcp-googlepay/src/Assets/Button.php
@@ -431,10 +431,20 @@ class Button implements ButtonInterface {
* @return array
*/
public function script_data(): array {
+ $use_shipping_form = $this->settings->has( 'googlepay_button_shipping_enabled' ) && $this->settings->get( 'googlepay_button_shipping_enabled' );
+
+ // On the product page, only show the shipping form for physical products.
+ $context = $this->context();
+ if ( $use_shipping_form && 'product' === $context ) {
+ $product = wc_get_product();
+
+ if ( ! $product || $product->is_downloadable() || $product->is_virtual() ) {
+ $use_shipping_form = false;
+ }
+ }
+
$shipping = array(
- 'enabled' => $this->settings->has( 'googlepay_button_shipping_enabled' )
- ? boolval( $this->settings->get( 'googlepay_button_shipping_enabled' ) )
- : false,
+ 'enabled' => $use_shipping_form,
'configured' => wc_shipping_enabled() && wc_get_shipping_method_count( false, true ) > 0,
);