mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-06 18:16:38 +08:00
Fix button_renderer logic & the behavior for single products
This commit is contained in:
parent
b7226bf73e
commit
036e7d0c33
1 changed files with 32 additions and 36 deletions
|
@ -411,16 +411,23 @@ class SmartButton implements SmartButtonInterface {
|
||||||
) {
|
) {
|
||||||
add_action(
|
add_action(
|
||||||
$this->single_product_renderer_hook(),
|
$this->single_product_renderer_hook(),
|
||||||
array(
|
function () {
|
||||||
$this,
|
$product = wc_get_product();
|
||||||
'button_renderer',
|
|
||||||
),
|
if (
|
||||||
|
is_a( $product, WC_Product::class )
|
||||||
|
&& ! $this->product_supports_payment( $product )
|
||||||
|
) {
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->button_renderer();
|
||||||
|
},
|
||||||
31
|
31
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
add_action( $this->pay_order_renderer_hook(), array( $this, 'button_renderer' ), 10 );
|
|
||||||
|
|
||||||
$not_enabled_on_minicart = $this->settings->has( 'button_mini_cart_enabled' ) &&
|
$not_enabled_on_minicart = $this->settings->has( 'button_mini_cart_enabled' ) &&
|
||||||
! $this->settings->get( 'button_mini_cart_enabled' );
|
! $this->settings->get( 'button_mini_cart_enabled' );
|
||||||
if (
|
if (
|
||||||
|
@ -447,21 +454,26 @@ class SmartButton implements SmartButtonInterface {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
add_action( $this->checkout_button_renderer_hook(), array( $this, 'button_renderer' ), 10 );
|
$available_gateways = WC()->payment_gateways->get_available_payment_gateways();
|
||||||
|
|
||||||
$not_enabled_on_cart = $this->settings->has( 'button_cart_enabled' ) &&
|
if ( isset( $available_gateways['ppcp-gateway'] ) ) {
|
||||||
! $this->settings->get( 'button_cart_enabled' );
|
add_action( $this->pay_order_renderer_hook(), array( $this, 'button_renderer' ), 10 );
|
||||||
add_action(
|
add_action( $this->checkout_button_renderer_hook(), array( $this, 'button_renderer' ), 10 );
|
||||||
$this->proceed_to_checkout_button_renderer_hook(),
|
|
||||||
function() use ( $not_enabled_on_cart ) {
|
|
||||||
if ( ! is_cart() || $not_enabled_on_cart || $this->is_free_trial_cart() || $this->is_cart_price_total_zero() ) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->button_renderer();
|
$not_enabled_on_cart = $this->settings->has( 'button_cart_enabled' ) &&
|
||||||
},
|
! $this->settings->get( 'button_cart_enabled' );
|
||||||
20
|
add_action(
|
||||||
);
|
$this->proceed_to_checkout_button_renderer_hook(),
|
||||||
|
function() use ( $not_enabled_on_cart ) {
|
||||||
|
if ( ! is_cart() || $not_enabled_on_cart || $this->is_free_trial_cart() || $this->is_cart_price_total_zero() ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->button_renderer();
|
||||||
|
},
|
||||||
|
20
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -521,22 +533,6 @@ class SmartButton implements SmartButtonInterface {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$product = wc_get_product();
|
|
||||||
|
|
||||||
if (
|
|
||||||
! is_checkout() && is_a( $product, WC_Product::class )
|
|
||||||
&& ! $this->product_supports_payment( $product )
|
|
||||||
) {
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$available_gateways = WC()->payment_gateways->get_available_payment_gateways();
|
|
||||||
|
|
||||||
if ( ! isset( $available_gateways['ppcp-gateway'] ) ) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// The wrapper is needed for the loading spinner,
|
// The wrapper is needed for the loading spinner,
|
||||||
// otherwise jQuery block() prevents buttons rendering.
|
// otherwise jQuery block() prevents buttons rendering.
|
||||||
echo '<div class="ppc-button-wrapper"><div id="ppc-button"></div></div>';
|
echo '<div class="ppc-button-wrapper"><div id="ppc-button"></div></div>';
|
||||||
|
@ -843,7 +839,7 @@ class SmartButton implements SmartButtonInterface {
|
||||||
'messages' => $this->message_values(),
|
'messages' => $this->message_values(),
|
||||||
'labels' => array(
|
'labels' => array(
|
||||||
'error' => array(
|
'error' => array(
|
||||||
'generic' => __(
|
'generic' => __(
|
||||||
'Something went wrong. Please try again or choose another payment source.',
|
'Something went wrong. Please try again or choose another payment source.',
|
||||||
'woocommerce-paypal-payments'
|
'woocommerce-paypal-payments'
|
||||||
),
|
),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue