mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-01 07:02:48 +08:00
Merge pull request #607 from woocommerce/PCP-632-smart-buttons-not-loading
Fix the button render logic when free product is in cart.
This commit is contained in:
commit
fc31202305
2 changed files with 16 additions and 20 deletions
|
@ -13,7 +13,6 @@ class CreditCardRenderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
render(wrapper, contextConfig) {
|
render(wrapper, contextConfig) {
|
||||||
|
|
||||||
if (
|
if (
|
||||||
(
|
(
|
||||||
this.defaultConfig.context !== 'checkout'
|
this.defaultConfig.context !== 'checkout'
|
||||||
|
@ -42,6 +41,9 @@ class CreditCardRenderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
const gateWayBox = document.querySelector('.payment_box.payment_method_ppcp-credit-card-gateway');
|
const gateWayBox = document.querySelector('.payment_box.payment_method_ppcp-credit-card-gateway');
|
||||||
|
if(! gateWayBox) {
|
||||||
|
return
|
||||||
|
}
|
||||||
const oldDisplayStyle = gateWayBox.style.display;
|
const oldDisplayStyle = gateWayBox.style.display;
|
||||||
gateWayBox.style.display = 'block';
|
gateWayBox.style.display = 'block';
|
||||||
|
|
||||||
|
|
|
@ -446,28 +446,21 @@ class SmartButton implements SmartButtonInterface {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $this->is_cart_price_total_zero() && ! $this->is_free_trial_cart() ) {
|
add_action( $this->checkout_button_renderer_hook(), array( $this, 'button_renderer' ), 10 );
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$not_enabled_on_cart = $this->settings->has( 'button_cart_enabled' ) &&
|
$not_enabled_on_cart = $this->settings->has( 'button_cart_enabled' ) &&
|
||||||
! $this->settings->get( 'button_cart_enabled' );
|
! $this->settings->get( 'button_cart_enabled' );
|
||||||
if (
|
add_action(
|
||||||
is_cart()
|
$this->proceed_to_checkout_button_renderer_hook(),
|
||||||
&& ! $not_enabled_on_cart
|
function() use ( $not_enabled_on_cart ) {
|
||||||
&& ! $this->is_free_trial_cart()
|
if ( ! is_cart() || $not_enabled_on_cart || $this->is_free_trial_cart() || $this->is_cart_price_total_zero() ) {
|
||||||
) {
|
return;
|
||||||
add_action(
|
}
|
||||||
$this->proceed_to_checkout_button_renderer_hook(),
|
|
||||||
array(
|
|
||||||
$this,
|
|
||||||
'button_renderer',
|
|
||||||
),
|
|
||||||
20
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
add_action( $this->checkout_button_renderer_hook(), array( $this, 'button_renderer' ), 10 );
|
$this->button_renderer();
|
||||||
|
},
|
||||||
|
20
|
||||||
|
);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1231,10 +1224,11 @@ class SmartButton implements SmartButtonInterface {
|
||||||
* Check if cart product price total is 0.
|
* Check if cart product price total is 0.
|
||||||
*
|
*
|
||||||
* @return bool true if is 0, otherwise false.
|
* @return bool true if is 0, otherwise false.
|
||||||
|
* @psalm-suppress RedundantConditionGivenDocblockType
|
||||||
*/
|
*/
|
||||||
protected function is_cart_price_total_zero(): bool {
|
protected function is_cart_price_total_zero(): bool {
|
||||||
// phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
|
// phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
|
||||||
return WC()->cart->get_cart_contents_total() == 0;
|
return WC()->cart && WC()->cart->get_total( 'numeric' ) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue