Make PayPal Subscription products unique in cart

This commit is contained in:
George Burduli 2024-05-27 16:57:07 +04:00
parent 2aeeb78a16
commit 9b3febfdeb
No known key found for this signature in database
GPG key ID: 572A97DFDA3D2E5C

View file

@ -80,6 +80,8 @@ class PayPalSubscriptionsModule implements ModuleInterface {
return;
}
$foo = $product;
$subscriptions_api_handler = $c->get( 'paypal-subscriptions.api-handler' );
assert( $subscriptions_api_handler instanceof SubscriptionsApiHandler );
$this->update_subscription_product_meta( $product, $subscriptions_api_handler );
@ -87,6 +89,30 @@ class PayPalSubscriptionsModule implements ModuleInterface {
12
);
add_filter( 'woocommerce_add_to_cart_validation', function
(
$passed_validation,
$product_id
) {
if ( WC()->cart->is_empty() ) {
return $passed_validation;
}
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
if ( get_post_meta( $cart_item['product_id'], 'ppcp_subscription_product', true ) ) {
wc_add_notice(__('You can only have one subscription product in your cart.', 'woocommerce-paypal-payments'), 'error');
return false;
}
if ( get_post_meta( $product_id, 'ppcp_subscription_product', true ) ) {
wc_add_notice(__('You cannot add a subscription product to a cart with other items.', 'woocommerce-paypal-payments'), 'error');
return false;
}
}
return $passed_validation;
}, 10, 2);
add_action(
'woocommerce_save_product_variation',
/**