Add checkout location programmatically when remove in button locations for apple and google pay

This commit is contained in:
Emili Castells Guasch 2024-11-04 16:19:01 +01:00
parent d5745709d8
commit 1a5003770f
3 changed files with 33 additions and 1 deletions

View file

@ -168,6 +168,20 @@ class ApplepayModule implements ServiceModule, ExtendingModule, ExecutableModule
} }
); );
add_filter(
'woocommerce_paypal_payments_selected_button_locations',
function( array $locations, string $setting_name ) {
$gateway = WC()->payment_gateways()->payment_gateways()[ ApplePayGateway::ID ] ?? '';
if ( $gateway && $gateway->enabled === 'yes' && $setting_name === 'smart_button_locations' ) {
$locations[] = 'checkout';
}
return $locations;
},
10,
2
);
return true; return true;
} }

View file

@ -218,6 +218,20 @@ class GooglepayModule implements ServiceModule, ExtendingModule, ExecutableModul
} }
); );
add_filter(
'woocommerce_paypal_payments_selected_button_locations',
function( array $locations, string $setting_name ) {
$gateway = WC()->payment_gateways()->payment_gateways()[ GooglePayGateway::ID ] ?? '';
if ( $gateway && $gateway->enabled === 'yes' && $setting_name === 'smart_button_locations' ) {
$locations[] = 'checkout';
}
return $locations;
},
10,
2
);
return true; return true;
} }
} }

View file

@ -123,7 +123,11 @@ class SettingsStatus {
protected function is_enabled_for_location( string $setting_name, string $location ): bool { protected function is_enabled_for_location( string $setting_name, string $location ): bool {
$location = $this->normalize_location( $location ); $location = $this->normalize_location( $location );
$selected_locations = $this->settings->has( $setting_name ) ? $this->settings->get( $setting_name ) : array(); $selected_locations = apply_filters(
'woocommerce_paypal_payments_selected_button_locations',
$this->settings->has( $setting_name ) ? $this->settings->get( $setting_name ) : array(),
$setting_name
);
if ( empty( $selected_locations ) ) { if ( empty( $selected_locations ) ) {
return false; return false;