🐛 Hide shipping options for non-physical products

This commit is contained in:
Philipp Stracker 2024-09-20 16:52:28 +02:00
parent 44a4830480
commit 975660d905
No known key found for this signature in database

View file

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