Quick answer
If subscription choices stop responding only in a custom quick view or template, check whether the plan-selector script is loaded. Subscriptions 9.2 registers wcsatt-frontend without loading it everywhere. Custom surfaces may need WCS_ATT_Display::enqueue_frontend_script() before scripts are printed.
Use the normal product page as a control
Open the same product on its standard single-product page and on the custom surface. Compare selecting a subscription option, selecting a one-time purchase if available, changing quantity, and adding the item to the cart. Keep the user session and product variation consistent.
If both surfaces fail, investigate a broader compatibility or script error first. If only the modal fails, focus on what its template loads and when it is initialized. Avoid changing payment gateways or subscription prices while diagnosing a click handler.
Inspect loading separately from behavior
Use the browser Network panel to record the scripts requested by the containing page. Filter for the plan-selector asset or inspect the registered script output. Then check the Console for an earlier JavaScript error that could have prevented initialization. A downloaded file can still fail to execute correctly.
Repeat with the quick view opened for the first time and reopened. Some custom implementations attach handlers again on every open, while others initialize only at the original document load. Both problems can look like a missing script when you only test one click.
Put the enqueue in the page lifecycle
The vendor recommends calling the supported enqueue helper before scripts print when your code renders the selector outside the normal supported surfaces. Make this change in maintained customization code, not the plugin's own files, so the next plugin update does not erase it.
A PHP call made while serving a later AJAX fragment cannot retroactively add a script tag to the original document's already-rendered footer. When a modal may display subscription choices, arrange for the containing page to load the required asset early enough. Consult the custom quick-view integration's initialization contract as well.
// In maintained custom code, before scripts print.
if ( class_exists( 'WCS_ATT_Display' ) ) {
WCS_ATT_Display::enqueue_frontend_script();
}
Keep the change narrow
The helper is idempotent, but that does not make every custom listener idempotent. Do not paste another copy of the entire frontend library into the modal HTML. Remove improvised duplicate loading only after you understand which code owns the original behavior.
Limit the customization to pages that can show the relevant selector. Broadly loading extra assets everywhere can hide a timing mistake while increasing page work. Document the template or component that requires the asset so future redesigns do not silently remove the dependency.
Verify what reaches the cart
A highlighted option is not sufficient evidence. Add the selected product to the cart and inspect the plan, recurring price, interval, and any one-time charge shown to the shopper. Continue to the checkout review screen in test mode without charging a real customer.
Test a variable product separately if your modal supports it. Change variation after choosing a plan and verify that the selected option still makes sense. Then remove the item, reopen the modal, and begin again. This catches stale state that a single successful click will miss.
- Standard product page still works after the change.
- The first modal open and subsequent opens behave consistently.
- Keyboard users can select and submit the intended option.
- No console error or duplicate cart request appears.
Finish with a controlled deployment
Preserve the previous custom-code revision and record the exact plugin versions used in staging. After deployment, clear the affected asset and page caches according to your hosting setup, then verify the public custom surface as a logged-out shopper.
If the fix is incomplete, roll back the customization rather than downgrading the entire subscription stack reflexively. Keep a redacted network trace and the cart outcome for the integration developer. They show whether the remaining problem is asset delivery, initialization, or server-side interpretation of the selected plan.
Illustrative diagnostic worksheet. Use your own test results.When to bring in help
Get WooCommerce frontend support when the standard product page works but a modal or landing page does not. Provide the custom template name and a sandbox reproduction. The useful comparison is the same product through two rendering paths, not two unrelated screenshots.
Related troubleshooting
Check the deployed Subscriptions version.
Helpful references
WooCommerce Subscriptions 9.2 advisory.