Membership auto-renew is not optional if using price set
The "optional auto-renew" setting for a membership type is not honored on the contribution page if using a price set.
Repro steps:
- Configure a membership type with "auto-renew option" = "Give option, but not required", e.g., "General type A"
- Create a membership price set with a "membership type" field (radio) including at least the "General type A" membership type.
- Create a contribution page using this price set;
- Just in case, ensure the contribution page uses a payment processor that supports recurring contributions (not sure if this step is necessary for repro, but it would be in the real world)
- Open the contribution page in "live" mode
- Below the "Membership type" price field, observe the message "Membership will renew automatically."; also observe there is no checkbox labeled "Please renew my membership automatically." (which would be expected for optional auto-renewal).
Bonus repro:
- Edit the configuration for "General type A" membership type, so that "auto-renew option" = "No auto-renew option".
- Reload the contribution page and observe that auto-renew is not required.
Bonus repro 2:
- Create another contribution page, this time offering the "General type A" membership type without using a price set (i.e., in the "quick config" membership type options under the Membership tab), and set the "Auto-renew" option to "Give option" for this membership type.
- Open this contribution page in "Live" mode and observe that the checkbox labeled "Please renew my membership automatically." appears as expected.
Other notes:
- Just to be sure I'm not imagining things, this did used to work; here are a couple of sources indicating I should be able to use a membership price set and still have the membership types "auto-renew is optional" setting be honored on the contribution page:
- Using the browser developer's console to edit on-page html I can make the hidden/forced checkbox visible and uncheck it; when the form is submitted in this state, the membership is created without auto-renewal; this indicates the issue is primarily with the creation of the page (e.g., hiding via JavaScript, etc.), and that form validation still allows optional renewal.