Update: I received this response from the dev team:
This feature has been requested in the past, but s2Member is still a platform that allows for one subscription at a time, and does not support a single customer having multiple simultaneous subscriptions on the site. While you can sell a customer CCAPs independently, these are always sold on a “Buy Now” basis; i.e., something that is added to their account. At this time, there is no functionality that would allow for a customer to make two purchases for CCAPs, where each purchase is associated with a separate subscription that could be cancelled along with those CCAPs as a separate cancellation item.
The closest you could get would be to disable them via PHP in some automated way on your own.. See: Roles/Capabilities via PHP.
I already have custom code that removes individual ccaps:
add_action('cancel_xyz', 'cancel_xyz');
function cancel_xyz(){
$user = wp_get_current_user();
$user->remove_cap('access_s2member_ccap_xyz');
}
This works perfectly in removing ccaps from a particular user, so now my question is, is there any way to engage the stripe api to somehow reduce the cost of the members subscription?
For example, if the user has 1 subscription, but access to 3 ccaps @ $10/mo each (added individually on the buy side via conditional shortcodes and form variations), their total subscription would be $30/mo. If they choose to cancel 1 ccap, it would remove it from their account (via the code above), and reduce the monthly subscription in stripe from $30/mo to $20/mo.
If anyone can point me in the right direction, it would be much appreciated.
The ccaps are independent from subscriptions, and this is “the beauty” of them. Can you use different levels instead? This way you will handle subscription sums very easy, as levels are created for subscriptions, and this is “the beauty” of them.
I might be able to make that work. I could sell levels, where level1 = access to 1 ccap, level2 = access to 2 ccaps, etc… then let the user choose which ccaps they want access to. Obviously, it would take a bit of custom code, but that’s fine. I wouldn’t have to code out the billing piece since the levels would do that for me, and I could let them up/downgrade as needed. Thanks for pushing my thought process along 🙂