mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-06 09:08:09 +08:00
🔀 Merge branch 'trunk'
This commit is contained in:
commit
1f5caac2f1
7 changed files with 133 additions and 61 deletions
|
@ -1,6 +1,6 @@
|
|||
*** Changelog ***
|
||||
|
||||
= 2.8.0 - xxxx-xx-xx =
|
||||
= 2.8.0 - 2024-06-11 =
|
||||
* Fix - Calculate totals after adding shipping to include taxes #2296
|
||||
* Fix - Package tracking integration throws error in 2.7.1 #2289
|
||||
* Fix - Make PayPal Subscription products unique in cart #2265
|
||||
|
|
|
@ -18,8 +18,8 @@ return function ( string $root_dir ): iterable {
|
|||
( require "$modules_dir/woocommerce-logging/module.php" )(),
|
||||
( require "$modules_dir/ppcp-admin-notices/module.php" )(),
|
||||
( require "$modules_dir/ppcp-api-client/module.php" )(),
|
||||
( require "$modules_dir/ppcp-button/module.php" )(),
|
||||
( require "$modules_dir/ppcp-compat/module.php" )(),
|
||||
( require "$modules_dir/ppcp-button/module.php" )(),
|
||||
( require "$modules_dir/ppcp-onboarding/module.php" )(),
|
||||
( require "$modules_dir/ppcp-session/module.php" )(),
|
||||
( require "$modules_dir/ppcp-status-report/module.php" )(),
|
||||
|
|
|
@ -95,47 +95,51 @@ trait ContextTrait {
|
|||
* @return string
|
||||
*/
|
||||
protected function context(): string {
|
||||
if ( is_product() || wc_post_content_has_shortcode( 'product_page' ) ) {
|
||||
// Default context.
|
||||
$context = 'mini-cart';
|
||||
|
||||
switch ( true ) {
|
||||
case is_product() || wc_post_content_has_shortcode( 'product_page' ):
|
||||
// Do this check here instead of reordering outside conditions.
|
||||
// In order to have more control over the context.
|
||||
if ( $this->is_checkout() && ! $this->is_paypal_continuation() ) {
|
||||
return 'checkout';
|
||||
}
|
||||
|
||||
return 'product';
|
||||
$context = 'checkout';
|
||||
} else {
|
||||
$context = 'product';
|
||||
}
|
||||
break;
|
||||
|
||||
// has_block may not work if called too early, such as during the block registration.
|
||||
if ( has_block( 'woocommerce/cart' ) ) {
|
||||
return 'cart-block';
|
||||
case has_block( 'woocommerce/cart' ):
|
||||
$context = 'cart-block';
|
||||
break;
|
||||
|
||||
case $this->is_cart():
|
||||
$context = 'cart';
|
||||
break;
|
||||
|
||||
case is_checkout_pay_page():
|
||||
$context = 'pay-now';
|
||||
break;
|
||||
|
||||
case has_block( 'woocommerce/checkout' ):
|
||||
$context = 'checkout-block';
|
||||
break;
|
||||
|
||||
case $this->is_checkout() && ! $this->is_paypal_continuation():
|
||||
$context = 'checkout';
|
||||
break;
|
||||
|
||||
case $this->is_add_payment_method_page():
|
||||
$context = 'add-payment-method';
|
||||
break;
|
||||
|
||||
case $this->is_block_editor():
|
||||
$context = 'block-editor';
|
||||
break;
|
||||
}
|
||||
|
||||
if ( $this->is_cart() ) {
|
||||
return 'cart';
|
||||
}
|
||||
|
||||
if ( is_checkout_pay_page() ) {
|
||||
return 'pay-now';
|
||||
}
|
||||
|
||||
if ( has_block( 'woocommerce/checkout' ) ) {
|
||||
return 'checkout-block';
|
||||
}
|
||||
|
||||
if ( $this->is_checkout() && ! $this->is_paypal_continuation() ) {
|
||||
return 'checkout';
|
||||
}
|
||||
|
||||
if ( $this->is_add_payment_method_page() ) {
|
||||
return 'add-payment-method';
|
||||
}
|
||||
|
||||
if ( $this->is_block_editor() ) {
|
||||
return 'block-editor';
|
||||
}
|
||||
|
||||
return 'mini-cart';
|
||||
return apply_filters( 'woocommerce_paypal_payments_context', $context );
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -54,6 +54,18 @@ return array(
|
|||
);
|
||||
},
|
||||
|
||||
'compat.plugin-script-file-names' => static function( ContainerInterface $container ) : array {
|
||||
return array(
|
||||
'button.js',
|
||||
'gateway-settings.js',
|
||||
'status-page.js',
|
||||
'order-edit-page.js',
|
||||
'fraudnet.js',
|
||||
'tracking-compat.js',
|
||||
'ppcp-clear-db.js',
|
||||
);
|
||||
},
|
||||
|
||||
'compat.gzd.is_supported_plugin_version_active' => function (): bool {
|
||||
return function_exists( 'wc_gzd_get_shipments_by_order' ); // 3.0+
|
||||
},
|
||||
|
|
|
@ -15,6 +15,7 @@ use WooCommerce\PayPalCommerce\Vendor\Interop\Container\ServiceProviderInterface
|
|||
use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface;
|
||||
use WooCommerce\PayPalCommerce\Compat\Assets\CompatAssets;
|
||||
use WooCommerce\PayPalCommerce\WcGateway\Exception\NotFoundException;
|
||||
use WooCommerce\PayPalCommerce\WcGateway\Helper\CartCheckoutDetector;
|
||||
use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
|
||||
|
||||
/**
|
||||
|
@ -41,7 +42,6 @@ class CompatModule implements ModuleInterface {
|
|||
public function run( ContainerInterface $c ): void {
|
||||
|
||||
$this->initialize_ppec_compat_layer( $c );
|
||||
$this->fix_site_ground_optimizer_compatibility( $c );
|
||||
$this->initialize_tracking_compat_layer( $c );
|
||||
|
||||
$asset_loader = $c->get( 'compat.assets' );
|
||||
|
@ -54,6 +54,8 @@ class CompatModule implements ModuleInterface {
|
|||
$this->migrate_smart_button_settings( $c );
|
||||
|
||||
$this->fix_page_builders();
|
||||
$this->exclude_cache_plugins_js_minification( $c );
|
||||
$this->set_elementor_checkout_context();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -88,24 +90,6 @@ class CompatModule implements ModuleInterface {
|
|||
}
|
||||
}
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Fixes the compatibility issue for <a href="https://wordpress.org/plugins/sg-cachepress/">SiteGround Optimizer plugin</a>.
|
||||
*
|
||||
* @link https://wordpress.org/plugins/sg-cachepress/
|
||||
*
|
||||
* @param ContainerInterface $c The Container.
|
||||
*/
|
||||
protected function fix_site_ground_optimizer_compatibility( ContainerInterface $c ): void {
|
||||
$ppcp_script_names = $c->get( 'compat.plugin-script-names' );
|
||||
add_filter(
|
||||
'sgo_js_minify_exclude',
|
||||
function ( array $scripts ) use ( $ppcp_script_names ) {
|
||||
return array_merge( $scripts, $ppcp_script_names );
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -329,4 +313,69 @@ class CompatModule implements ModuleInterface {
|
|||
$parent = $theme->parent();
|
||||
return ( $parent && $parent->get( 'Name' ) === 'Divi' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the context for the Elementor checkout page.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function set_elementor_checkout_context(): void {
|
||||
add_action(
|
||||
'wp',
|
||||
function() {
|
||||
$page_id = get_the_ID();
|
||||
if ( ! $page_id || ! CartCheckoutDetector::has_elementor_checkout( $page_id ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
add_filter(
|
||||
'woocommerce_paypal_payments_context',
|
||||
function ( string $context ): string {
|
||||
// Default context.
|
||||
return ( 'mini-cart' === $context ) ? 'checkout' : $context;
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Excludes PayPal scripts from being minified by cache plugins.
|
||||
*
|
||||
* @param ContainerInterface $c The Container.
|
||||
* @return void
|
||||
*/
|
||||
protected function exclude_cache_plugins_js_minification( ContainerInterface $c ): void {
|
||||
$ppcp_script_names = $c->get( 'compat.plugin-script-names' );
|
||||
$ppcp_script_file_names = $c->get( 'compat.plugin-script-file-names' );
|
||||
|
||||
// Siteground SG Optimize.
|
||||
add_filter(
|
||||
'sgo_js_minify_exclude',
|
||||
function( array $scripts ) use ( $ppcp_script_names ) {
|
||||
return array_merge( $scripts, $ppcp_script_names );
|
||||
}
|
||||
);
|
||||
|
||||
// LiteSpeed Cache.
|
||||
add_filter(
|
||||
'litespeed_optimize_js_excludes',
|
||||
function( array $excluded_js ) use ( $ppcp_script_file_names ) {
|
||||
return array_merge( $excluded_js, $ppcp_script_file_names );
|
||||
}
|
||||
);
|
||||
|
||||
// W3 Total Cache.
|
||||
add_filter(
|
||||
'w3tc_minify_js_do_tag_minification',
|
||||
function( bool $do_tag_minification, string $script_tag, string $file ) {
|
||||
if ( $file && strpos( $file, 'ppcp' ) !== false ) {
|
||||
return false;
|
||||
}
|
||||
return $do_tag_minification;
|
||||
},
|
||||
10,
|
||||
3
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -57,12 +57,19 @@ class CartCheckoutDetector {
|
|||
/**
|
||||
* Check if the Checkout page is using Elementor.
|
||||
*
|
||||
* @param int $page_id The ID of the page.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function has_elementor_checkout(): bool {
|
||||
public static function has_elementor_checkout( int $page_id = 0 ): bool {
|
||||
// Check if Elementor is installed and activated.
|
||||
if ( did_action( 'elementor/loaded' ) ) {
|
||||
if ( $page_id ) {
|
||||
$elementor_widgets = self::get_elementor_widgets( $page_id );
|
||||
} else {
|
||||
// Check the WooCommerce checkout page.
|
||||
$elementor_widgets = self::get_elementor_widgets( wc_get_page_id( 'checkout' ) );
|
||||
}
|
||||
|
||||
if ( $elementor_widgets ) {
|
||||
return in_array( 'woocommerce-checkout-page', $elementor_widgets, true );
|
||||
|
|
|
@ -179,7 +179,7 @@ If you encounter issues with the PayPal buttons not appearing after an update, p
|
|||
|
||||
== Changelog ==
|
||||
|
||||
= 2.8.0 - xxxx-xx-xx =
|
||||
= 2.8.0 - 2024-06-11 =
|
||||
* Fix - Calculate totals after adding shipping to include taxes #2296
|
||||
* Fix - Package tracking integration throws error in 2.7.1 #2289
|
||||
* Fix - Make PayPal Subscription products unique in cart #2265
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue