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, );