Unified Changelog
Specifications
- Version: 260410
- Stable tag: 260410
- Tested up to: 7.0-RC2-62197
- Requires at least: 4.2
- Requires PHP: 5.6.2
- Tested up to PHP: 8.4
- License: GNU General Public License v2 or later.
- Contributors: WebSharks, JasWSInc, raamdev, clavaque, eduan
- Author: WP Sharks
- Author URI: http://s2member.com/
- Donate link: http://s2member.com/donate/
- Beta link: http://s2member.com/beta-testers/
- Text Domain: s2member
- Domain Path: /languages
- Plugin Name: s2Member® Pro Add-on
- Plugin URI: http://s2member.com/
- Tags: membership, subscribers, subscriber, members only, roles, capabilities, capability, register, signup, paypal, ecommerce, restriction
s2Member® Pro adds Stripe™, PayPal® Payments Pro and Authorize.Net integrations, advanced import/export tools, and many other enhancements.
You can learn more about s2Member® Pro at s2Member.com.
s2Member® Pro is Very Easy to Install
- First, you need to have the latest version of the s2Member® Framework already installed.
- Then, upload the
/s2member-profolder to your/wp-content/plugins/directory. - That's it! s2Member® Pro will be loaded into the free version of s2Member automatically.
See Also (s2Member.com)
Detailed installation/upgrade instructions.
Is s2Member compatible with Multisite Networking?
Yes. s2Member and s2Member Pro, are also both compatible with Multisite Networking. After you enable Multisite Networking, install the s2Member plugin. Then navigate to s2Member → Multisite (Config) in the Dashboard on your Main Site.
Please Check the Following s2Member® Resources
- s2Member® FAQs: http://s2member.com/faqs/
- Knowledge Base: http://s2member.com/kb/
- Video Tutorials: http://s2member.com/videos/
- Community: http://s2member.com/r/forum/
- Codex: http://s2member.com/codex/
Translating s2Member®
Please see: http://s2member.com/r/translations/
Copyright: © 2013 WP Sharks (coded in the USA)
Released under the terms of the GNU General Public License.
Credits / Additional Acknowledgments
- Software designed for WordPress®.
- GPL License http://codex.wordpress.org/GPL
- WordPress® http://wordpress.org
- JavaScript extensions require jQuery.
- GPL License http://jquery.org/license
- jQuery http://jquery.com/
- Readme parsing routines, powered (in part) by PHP Markdown.
- BSD / GPL Compatible License http://michelf.com/projects/php-markdown/license/
- PHP Markdown http://michelf.com/projects/php-markdown/
- Administration panel (tools icon) was provided by Everaldo.com.
- Administration panel (videos icon) was provided by David Vignoni.
- LGPL License http://www.iconfinder.com/search/?q=iconset%3Anuvola2
- David Vignoni http://www.icon-king.com/
- PayPal® and its associated API, buttons & services have been integrated into this software via external hyperlinks.
The files/services provided by PayPal® are not distributed with this software. They have their own terms & conditions.
- PayPal®, a 3rd party service, is powered by eBay, Inc. http://www.paypal.com/
- PayPal® is a trademark of eBay, Inc. http://www.ebay.com/
- The W3C® and its associated validator & services have been integrated into this software via external hyperlinks.
The files/services provided by the W3C® are not distributed with this software. They have their own terms & conditions.
- The W3C®, a 3rd party service, is powered by the World Wide Web Consortium http://validator.w3.org/
- W3C® is a trademark of the World Wide Web Consortium. http://www.w3.org/
- The MailChimp® services have been integrated into this software through a GPL compatible API & hyperlinks.
The services provided by MailChimp® are not distributed with this software. They have their own terms & conditions.
- MailChimp®, a 3rd party service, is powered by The Rocket Science Group, LLC http://www.mailchimp.com/
- MailChimp® is a trademark of The Rocket Science Group, LLC. http://www.mailchimp.com/terms-policies/terms-of-use/
- The AWeber® services have been integrated into this software through hyperlinks & email commands.
The services provided by AWeber® are not distributed with this software. They have their own terms & conditions.
- AWeber®, a 3rd party service, is powered by AWeber Communications http://www.aweber.com/about.htm
- AWeber® is a trademark of AWeber Communications. http://www.aweber.com/service-agreement.htm
v260410
(Framework) Fix: Reduced the upfront requirements for processing PayPal Standard
subscr_cancelIPNs so valid cancellations are not ignored when supporting values are missing, stale, or non-membership-specific.(Framework) Fix: Prevent incorrect s2Member notifications in some PayPal Checkout cases where several webhooks are received about the same subscription.
(Framework) Fix: Prevent duplicate processing and notifications when PayPal sends both a webhook and an IPN for the same PayPal Checkout subscription payment.
(Framework) Fix: Added subscription modification cancellation support to the Framework, which was previously only available in the Pro addon.
(Pro) Fix: Made subscription modification cancellation gateway-aware, preventing orphaned active subscriptions when a member starts a replacement subscription through a different gateway.
(Pro) Fix: Prevented rare cases where subscription modification processing could cancel the newly created subscription by mistake.
(Pro) Fix: Improved Stripe customer lookup during checkout retries by falling back to email when the stored Stripe customer ID is missing, stale, or no longer retrievable.
v260325
(Framework) Fix: Improved PayPal Checkout webhook idempotency to prevent duplicate processing during repeated/concurrent webhooks, while preserving normal behavior.
(Framework) Fix: Resolved a PayPal IPN issue where some
subscr_cancelnotifications were ignored because the cancellation handler failed before it had fully identified the recurring subscription.(Framework) Improvement: Added IPN Signup Var lookups for missing PayPal cancellation IPN values like
period1,period3,item_number,item_name, andpayer_email, preventing validsubscr_cancelnotifications from being ignored.(Framework) Improvement: Moved s2Member's translation files to
/languages, following the WordPress standard, and updated.moloading to support that directory while continuing to support the standard and legacy WordPress locations.(Framework) Improvement: Hardened PayPal Standard IPN endpoint response handling and added debug logging for hosts/security layers that incorrectly return HTTP 403 after successful processing.
(Framework) Enhancement: Added
ukpostcodeas an expected-value option for Custom Registration/Profile Fields, with matching server-side and client-side validation for UK postcode input. The validation is designed to be reasonably broad, including standard UK formats and related special cases. Thanks to Gerard Earley for contributing the patch. See thread 12200(Framework) Enhancement: Added a new General Options > s2Get Shortcode setting to allow
user_idfor whitelisted user fields, defaulting to current-user. Also updated the s2Get KB article accordingly.(Pro) Fix: Updated Stripe card charge and PaymentIntent requests to use
statement_descriptor_suffixinstead ofstatement_descriptor, fixing card-payment errors where Stripe no longer acceptsstatement_descriptorfor card payments.(Pro) Fix: Corrected Stripe subscription checkout so resumed PaymentIntent flows no longer go through the wrong intent-status handler.
(Pro) Fix: Stripe now stops cleanly after card declines, instead of continuing into secondary intent/payment-method errors.
(Pro) Fix: Improved Stripe recurring-payment setup to better support future-charge authorization requirements, fixing failures in countries with stricter payment rules, including India.
(Pro) Fix: Stripe now updates recurring default payment methods only after a successful intent result, instead of earlier in checkout.
(Pro) Fix: Billing-update SetupIntent creation failures in Stripe now return the proper error response.
(Pro) Fix: Prevent duplicate/retried Stripe webhook events from being processed more than once, including near-simultaneous retries of the same Stripe event ID
(Pro) Fix: prevent Stripe billing modification/replacement from triggering EOT behavior for the cancelled old subscription while s2Member is still updating the member account with the new subscription.
(Pro) Fix: Removed a trailing-comma syntax issue in Stripe subscription update code that could cause PHP compatibility errors on older supported PHP versions.
(Pro) Fix: s2Member now cleans up incomplete subscriptions left behind by failed 3D Secure authentication attempts during Stripe checkout, and gives the customer a more clear payment failure message.
(Pro) Improvement: Added dedicated s2 Stripe log entries for non-fatal failures while updating the default payment method after successful intent completion.
v260312
(Framework) Fix: Prevent a PHP 8.1+ deprecation notice from appearing above the admin Users table in some cases.
(Framework) Security: Improved debug log sanitization.
(Framework) Improvement: PayPal Checkout credential test and OAuth failure log entries now include client_len_hash / secret_len_hash values (length_hash, e.g. 80_4d9a7c1b2e8f4a21) to help compare attempted credentials during troubleshooting without exposing raw values.
(Framework) Enhancement: Added a new No-Cache Headers Behavior option under General Options > Performance & Caching, making no-cache behavior configurable from the admin UI. It includes:
Alwaysmode, the legacy safe default that prevents caching site-wide in case user-conditional output appears.Selectivemode, which was previously available only through a filter and may improve caching for guests, but can miss some runtime no-cache triggers.- The new
Evaluativebeta mode, which evaluates the page with more runtime information and may allow more pages to be cached safely for guests. - An optional debug header to help troubleshoot no-cache behavior.
(Framework) UI: Clarified the Download Options text to explain that unique download limits are counted in the last X days (rolling window), reducing confusion about whether the limit resets on fixed calendar dates.
(Framework) UI: Improved the PayPal Checkout credentials test failure message.
(Framework) UI: Fixed the PayPal button encryption admin notice so that it shows only to administrators in the WP Admin area, not non-admin users.
v260301
(Framework) Bug Fix: Fixed mismatched
<label for="">and<input id="">attributes for checkbox/radio options in Custom Registration/Profile Fields; this also restores proper client-side validation for required checkbox/radio groups.(Framework) Fix: Hardened the Edit User Profile screen on PHP 8+ to avoid errors if a user’s Auto-EOT time is stored as a date string (e.g. YYYY-MM-DD) rather than a Unix timestamp (as can happen after imports/migrations).
(Framework) Fix: Fixed PHP 8+ "Undefined array key" warnings related to membership level label constants (including guest/non-logged-in access label handling).
(Framework) Fix: Resolved an issue that prevented PayPal Buttons "Generate Button Code" from working in some installations.
(Framework) Fix: Some PayPal Checkout log entries were missing the environment (sandbox/live), and now include it to help with troubleshooting.
(Framework) Fix: PayPal Checkout webhooks can continue processing existing subscriptions even if new sales are switched back to PayPal Standard.
(Framework) Fix: PayPal Checkout webhooks now also handle refunds, reversals, and additional subscription lifecycle events, improving user EOT/access updates and subscription state handling.
(Framework) Fix: Improved PayPal Checkout amount decimal normalization to prevent one-time payment validation mismatches.
(Framework) Fix: Updated PayPal Checkout webhook handling to prevent one-time payment captures from being processed as recurring payments.
(Framework & Pro) Fix: Prevent PHP 8.1+ deprecation warnings in gateway Pro-Forms and related checkout processing (Stripe, PayPal Pro, Authorize.Net), and in custom registration fields, by ensuring optional form/template values are cast to strings before escaping/processing.
(Framework) Security: Improved debug log sanitization (passwords, API secrets, auth credentials) and reduced post-registration plaintext password exposure.
(Framework) Improvement: PayPal Standard and PayPal Checkout cancellation buttons now use PayPal’s subscription management page when needed.
(Framework) Improvement: Better HTTPS detection in s2Member’s PayPal Checkout setup for sites using Cloudflare (or other reverse proxies), reducing false setup failures when enabling or configuring PayPal Checkout.
(Pro) Improvement: Hardened the Advanced Importer to normalize Auto-EOT values given as date strings (e.g. YYYY-MM-DD) into Unix timestamps when a date is used instead of the expected timestamp format.
(Pro) Improvement: PayPal Checkout buttons now support
accept="card"in Pro button attributes, enabling card funding/guest checkout where PayPal makes it available.
v260215
(Framework) Bug Fix: Prevent PHP fatal error when multiple PayPal Checkout buttons appear on the same page (PHP 8+).
(Framework) Bug Fix: PayPal Checkout admin actions (Test Credentials / Webhook / Clear Cache) now submit via POST instead of redirecting (avoids “headers already sent” warnings).
(Framework) Bug Fix: PayPal cancellation notifications now backfill missing membership mapping fields (
item_number,item_name,period1,period3) from stored IPN Signup Vars using the subscription ID (recurring_payment_id/subscr_id), so Auto-EOT is set correctly on cancel.(Framework) Bug Fix: Auto-EOT PayPal status checks now query PayPal Checkout subscriptions via PayPal’s REST Subscriptions API (instead of PayPal's legacy “Recurring Payments” API), preventing “11592” errors and allowing Auto-EOT to detect inactive PayPal Checkout subscriptions.
(Framework) Security: PayPal Checkout webhook environment inference now validates the
paypal-cert-urlhost before using it (hardens environment inference used during verification).(Framework) Security: PayPal Checkout cancel redirect now validates the destination URL and safely falls back to the site home URL.
(Framework) Security: PayPal Checkout tokens now use s2Member’s hardened unserialize routine.
(Framework) Security: Harden unserialization of stored custom capabilities metadata when loading user access rules.
(Framework) Security: Harden the registration password handler.
(Framework) Improvement: Harden PayPal Checkout endpoint behavior on problematic hosts; return consistent JSON errors (HTTP 500) on notify-proxy failures.
(Framework) Improvement: Harden PayPal Checkout REST API/webhook handling for network failures and unexpected/non-JSON responses (avoids PHP 8+ warnings).
(Framework) Improvement: PayPal Checkout webhook setup now treats "no change" updates and existing webhook URLs as success (adopts the existing webhook ID automatically).
(Framework) Improvement: PayPal Checkout webhook signature verification now auto-detects Sandbox vs Live from inbound headers (so webhooks validate correctly even if the site’s current environment setting differs).
(Framework) Improvement: PayPal Checkout logging now includes
env_setting(site setting) andenv_webhook(inferred from inbound webhook headers) for clearer Sandbox/Live environment troubleshooting.(Framework) Improvement: PayPal Checkout webhook idempotency cache (event/txn transients) now retains entries for 1 year (reduces long-term option bloat while preserving replay protection).
(Framework) Improvement: s2Member’s PayPal “Unsubscribe” button links to PayPal’s subscription management page, and with the new PayPal Checkout integration, when
output="button"and a PayPal subscription ID is present, s2Member will attempt to cancel the subscription directly.(Framework) UI: Add a description for
paypal-checkout.login the Log Viewer dropdown (so it’s not “No description available”).(Pro) Improvement: PayPal Checkout buttons now support
accept="card"to enable guest debit/credit card payment in the PayPal-hosted checkout experience when available (availability depends on PayPal settings/eligibility and browser privacy protections).
v260127
- (Framework) PayPal Enhancement: Modernized s2Member’s PayPal integration by adding support for PayPal Checkout with their latest REST APIs, Smart Buttons, and webhook event handling. This release introduces PayPal’s current Checkout platform as an optional, reliable alternative to the legacy PayPal Standard buttons. Existing s2Member PayPal button shortcodes continue to work as-is (no edits required). See: WP Admin > s2Member > PayPal Options > PayPal Checkout (Beta). Thanks to the beta testers, especially Sim Architect.
v260101
(Framework) Security: Improved sanitization and normalization of attribute values for the s2Eot, s2Strem and s2Member-Security-Badge shortcodes.
(Framework) Security: Improved sanitization of replacement values for confirmation and notification emails.
v251005
(Framework) Security: Improved sanitization for Tracking API replacement values.
(Framework) Fix: Use the site URL host instead of HTTP_HOST for proxy key when Skip Domain Check is enabled.
(Framework) Fix: Ensure the Fallback IPN Signup Vars provide a valid item_number for cancellation handling.
v250905
(Framework) Security: Improve handling of registration fields in multisite.
(Framework & Pro) UI: Add a Help panel with contact form to all admin pages.
v250701
- (Framework & Pro) Enhancement: s2Member now supports sending emails in HTML format, allowing for richer, styled messages with formatting, links, and branding. You can enable this feature under General Options > Email Configuration > Enable HTML Emails. When disabled, emails continue to use plain text as before. This feature is currently in beta, so feedback is welcome!
v250607
(Framework & Pro) Enhancement: Added a new option to skip the domain validation for notifications from the payment gateways. This allows continued processing of incoming notifications even if the domain in the
customvalue doesn't match the current site's. Useful for subscriptions originated outside of s2Member, or under a different domain. The setting is available under: WP Admin > s2Member > PayPal Options > PayPal IPN / Instant Payment Notifications(Pro) UI: Added the recent IPN Signup Vars Fallback and new Skip Domain Validation to all the gateway options pages.
(Framework) Enhancement: Added the site's language code when loading the reCaptcha.
(Pro) UI: Added a page refresh after the Pro Updater finishes installing the latest Pro release, to update the WP Admin interface and not show the Pro Updater again.
(Pro) UI: Added a page refresh after the Other Gateways options are saved, to update the WP Admin left menu.
v250525
- (Framework & Pro) Fix: Some translations were being applied too early, causing PHP notices since WP 6.7. Now all translations are only loaded at the
inithook or later. See thread 12813
v250511
(Framework) Fix: Improved the admin notices handler to prevent a PHP 8.1+ error in rare cases when the data wasn't an array as expected.
(Framework) Enhancement: Added sanitization to the admin notices handler for improved safety.
(Framework & Pro) Fix: Updated all uses of preg_split() with
-1instead ofNULLas the limit to prevent PHP 8.1+ deprecation warnings.(Pro) Fix: Fixed an s2Member-List database query with a typo that prevented some custom searches from working as expected.
(Pro) Fix: Removed a check in Stripe pro-forms that blocked using the same details for trial and regular payments for subscriptions. See thread 12818.
v250502
(Pro) Enhancement: Added optional fallback behavior for missing IPN Signup Vars during Stripe webhook processing. When enabled, s2Member will generate a makeshift IPN vars array if none are stored for the user. This helps support migrated or manually imported subscriptions. The setting is available under s2Member Pro > Stripe Options > Stripe Webhook/IPN Integration. See thread 11334.
(Framework) UI: Removed admin notice about Easter promo for Pro add-on.
v250424
- (Framework) Enhancement: Added additional sanitation/validation to the Logs Viewer, although only Administrators have access to it.
v250419
(Pro) Enhancement: Improved the new coupon code limit per user which prevents a user from applying a coupon code unlimited times, Instead of single use, it can now be limited to more uses, e.g. 3. It's been renamed from "User Once" to "User Max", max number of times a user can use that coupon. This is optional and leaving it blank will give the default "no limit".
(Pro) Enhancement: Improved validation of the template attribute in the s2Member-List-Search-Box shortcode.
(Framework) UI: Temporary admin notice about Easter promo for Pro add-on at 20% off.
v250214
(Pro) Enhancement: Improved coupon usage logging for better tracking.
(Pro) Enhancement: Added a new single-use per user option for coupons. Thanks to Carl Borsani for sponsoring this.
(Pro) Enhancement: Coupons can now be limited to specific pro-forms. Thanks to Carl Borsani for sponsoring this.
(Framework) Fix: s2Get can now handle s2Member’s custom profile fields. Thanks to Gerard Earley for reporting this.
(Framework) Fix: Updated the admin notice about the PayPal button encryption setting.
(Pro) Enhancement: Improved data handling in the Remote Operations API. Props to István.
(Pro) Enhancement: Improved validation of the template attribute in pro-forms and s2Member-List shortcodes. Props to István.
v241216
(Framework) Enhancement: Added extra attribute validation to the s2Get shortcode. Props to wcraft.
(Framework) Enhancement: Improved New User email preparation before send. Props to Hakiduck.
v241114
(Framework & Pro) Fix: An error could happen on PHP8 during Pro activation. Fixed in this release.
(Framework) Enhancement: s2Get shortcode can now be used to show s2's current user constants. E.g.
[s2Get constant="S2MEMBER_CURRENT_USER_DISPLAY_NAME" /]WP Admin > s2Member > API / Scripting > s2Member PHP/API Constants
v240325
(Framework) Fix: Some sites were getting a warning from v240315's restriction improvement when the WP REST request doesn't include a type or ID. Fixed in this release.See thread 11347
(Pro) Enhancement: Checkout success redirection URLs are now validated as safe with WordPress' wp_validate_redirect. To use a domain different than the site's, it can be allowed with wp's filter allowed_redirect_hosts.
(Framework) Enhancement: Additional validation to prevent an invalid s2Member Level role during registration.
v240315
- (Framework) Enhancement: Improved access restrictions applied to WP REST requests.
v240218
(Framework) Fix: PayPal button encryption default changed to "disabled".
(Framework) Fix: Mailchimp interest groups integration wasn't working correctly all the time. Fixed in this release.
v230815
(Framework) Fix: Added some missing functions to the list of conditionals allowed by default for s2If (e.g.
current_user_days_to_eot_less_than,current_user_gateway_is). See also: https://s2member.com/kb-article/s2if-simple-shortcode-conditionals/#toc-5bb69568(Pro) Enhancement: New s2If whitelist option for custom conditional functions to be allowed. s2Member Pro > Restriction Options > Simple Shortcode Conditionals > Whitelist
(Framework) Enhancement: Handle s2If conditional problems more gracefully. Instead of giving an error that prevents loading the rest of the page, it now just doesn't display that s2If's block, and enters a message in the error log (e.g.
/wp-content/debug.log).(Framework & Pro) Enhancement: Prevent output from s2If conditions, only true or false.
(Framework) UI: Update the Mailchimp example from
Group TitletoGroup Category, to match Mailchimp's current name in their settings. s2Member > API / List Servers > Mailchimp
v230808
(Framework) Fix: Potential security issue under rare circumstances. Fixed in this release.
(Framework) Fix: Mailchimp's groups/interests were not transitioning correctly with the updated integration. Fixed in this release.
(Framework) UI: Added a notice about PayPal giving trouble with encrypted buttons recently, recommending to not encrypt them for now. You may need to disable button encryption, and allow non-encrypted payments. s2Member > PayPal Options > Account Details > Button Encryption
(Framework) UI: Brought back the "Expand All" and "Collapse All" buttons for the admin panels. See thread 10796
(Framework) UI: Updated the link to the PayPal IPN configuration.
(Framework) UI: Added link to PayPal's IPN History page. s2Member > PayPal Options > PayPal IPN > More Information
(Pro) Fix: Stripe's billing update pro-form gave an error sometimes. Fixed in this release. See thread 10752
v230530
- (Framework) Enhancement: Updated the Mailchimp integration to v3 of their API. I made it so you shouldn't need to change anything, it should work with your existing configuration. Still worth doing a test or checking that things are normal after the update, and report any issues you notice. See: thread 10666
v230504
(Pro) Fix: Stripe subscriptions weren't using customer cards updated with the Billing Update pro-form. The subscription saved the first card, instead of defaulting to the card in the customer's profile. This release fixes that. The card is not added to a new subscription anymore, only to the customer's profile, and updating his profile's card with the Billing Update pro-form, will also update the subscription so it uses it. Thanks to Jim Antonucci for his help with this.
(Pro) Enhancement: The Stripe Billing Update pro-form now includes a field for the cardholder's name (i.e. Name On Card). Adding the name to the card will improve successful subscription charges. Thanks to Andy Johnsen for the idea.
v230425
(Framework) Fix: Fixed domain name format validation for custom profile fields.
(Framework) Fix: Fixes to markdown parser for PHP8 compatibility.
(Framework) Fix: Fixed HTML near AWeber's API key field.
v230413
(Pro) Bug Fix: An error could happen on PHP8 during Pro installation in a multisite network. Fixed in this release.
(Framework) Bug Fix: An error could happen on PHP8 when saving an edited user profile. Fixed in this release.
(Framework) UI Enhancement: In the List Servers admin page, removed mentions of the AWeber email parser, which isn't available any more.
v221103
- (Framework) Bug Fix: Removed latest changes to gateway notification and return handlers, that were causing difficulties with member access in some scenarios.
v221031
- (Framework) Bug Fix: Fix PayPal IPNs being ignored because a bug in the last release. After updating to this release, you may want to review your latest IPNs since updating to v221028, and re-send them from PayPal. See thread 10208
v221028
(Framework) Fix: Initialized some array keys to prevent PHP warnings in PayPal notify and return files. Thanks Greg M. for your help.
(Framework) UI: Widened the Logs viewer. Thanks Sim. See thread 10064
(Framework) UI: Framework auto-update is now allowed when Pro add-on installed.
(Pro) UI: The Pro updater now shows when a newer version available, not just when required.
v220925
(Pro) UI Enhancement: In ClickBank Options admin page, added note about keeping IPN encryption disabled.
(Pro) Enhancement: Removed ClickBank's name from the notify, return, and success URLs, replaced with just
cb. Kudos to Eduardo for telling me about this. See thread 9910(Pro) Enhancement: Added a PayPal payment request ID to help prevent random/rare PayPal duplicate charges. Kudos to Nathan for his help. See thread 7999
(Framework) UI Enhancement: Admin page panels widened for larger displays.
(Framework) UI Enhancement: Simplified Getting Started and Getting Help admin pages.
(Framework) UI Enhancement: In PayPal Options admin page, updated paths and links to PayPal settings.
(Framework) Bug Fix: Removed the Security Badge's link to the old Flash powered page on s2Member's site.
(Pro) UI Enhancement: Small improvements to the Pro upgrader.
v220809
- (Framework) Enhancement: New
current_user_days_to_eot_less_thanfunction for conditionals. Useful when you want to show a message to a user on his last days of access before the EOT time in his profile. E.g.[s2If current_user_days_to_eot_less_than(31)]Please renew your membership[/s2If]. Kudos to Felix for his help, see post 6783.
v220421
(Framework & Pro) Enhancement: Improved PHP compatibility to 8.1.
(Framework) UI Fix:
More Updateslink fixed.
v220318
(Framework) Enhancement: New
current_user_gateway_isfunction for conditionals. Useful for sites using more than one gateway. E.g.[s2If current_user_gateway_is(stripe)] ...(Pro) UI Fix: Removed "Image Branding" setting from s2's Stripe options, not used in current integration.
v210526
(s2Member Framework & Pro) UI Enhancement: Started improving the admin interface. Lightened up the colors, and changed the layout a little bit.
(s2Member Framework) UI Enhancement: Added title tag to buttons to manage custom profile fields in admin, to improve use with screen-reader. Thread 8836
(s2Member Pro) UI Fix: Fixed typo in pro-form
rrtattribute description. Issue 1204(s2Member Framework) Bug Fix: Registration Date sometimes wasn't formatted correctly with the s2Get shortcode. Thread 8730
v210208
(s2Member Pro) Enhancement: In the Stripe integration, cancelling a subscription in the last minutes of a period, may cause the invoice for the new period to remain there and still be charged later. Now s2Member Pro attempts to find a draft or open invoice for the subscription being cancelled, and void it. Thanks Alan for reporting it. See post 8386.
(s2Member Pro) UI Enhancement: Improved Stripe pro-form error message when trying to create a subscription with a bad card. Thanks everyone that reported it. See issue #1184, post 6043, and post 8386.
(s2Member Pro) Enhancement: Added the new action hooks
ws_plugin__s2member_pro_before_stripe_notify_event_switchandws_plugin__s2member_pro_after_stripe_notify_event_switchin the Stripe endpoint to allow customizations, e.g. new event handlers.(s2Member Pro) UI Fix: Removed some leftover mentions of Bitcoin support in Stripe's options.
(s2Member Pro) UI Fix: Removed a couple of deprecated shortcode attributes from the documentation for Stripe's pro-form, leftovers from the old integration. Kudos to Debbie for bringing my attention to them. See post 8053.
(s2Member Framework) UI Fix: Fixed some broken links and video players in the admin pages.
(s2Member Framework) Bug Fix: Resolved a warning given when changing users role in bulk from the WP Admin > Users page.
(s2Member Server Scanner) Bug Fix: Updated the Server Scanner to remove some outdated warnings.
v201225
(s2Member Framework) Bug Fix: View Password icon WP's login page was not displaying correctly. Kudos to Beee4life for reporting it. See issue #1187
(s2Member Framework and Pro) Enhancement: Refactored PHP's deprecated create_function with anonymous functions. Kudos to Berry for reporting it, see post 6069
(s2Member Framework) Bug Fix: Added a check for empty return variable before trying to use it in paypal-utilities.inc.php.
(s2Member Framework) Bug Fix: Added checks for undefined indexes before trying to use them in paypal-return-in-subscr-or-wa-w-level.inc.php.
(s2Member Framework) Bug Fix: Added a check for undefined index before using it to define a couple of s2 constants. Kudos to Berry for reporting it, see post 8181
(s2Member Pro) Bug Fix: s2's payment notification when creating a Stripe subscription, was being sent twice. Added a check to ignore the webhook for the subscription's on-session first payment; s2's webhook endpoint is for off-session events.
(s2Member Framework) Enhancement: Added a new hook for the payment notification on subscription creation or buy now payments.
(s2Member Pro) Bug Fix: Stripe paid trials were accumulating on failed payment attempts, causing a larger charge when it finally succeeded. Kudos to Alan for his help through the many attempts to fix this one, see post 7002.
(s2Member Pro) Enhancement: Stripe duplicate payments were happening randomly to a few site owners, apparently from bad communication between their server and Stripe's. Added idempotency to prevent duplicates. Kudos to Alan and everyone in the forum that reported and gave details on this behavior, see post 7002
v200301
(s2Member Pro) Enhancement: Added "Powered by Stripe" to Stripe pro-form's payment card field. Kudos to Josh, see post 6716.
(s2Member Pro) Bug Fix: Stripe subscription cancellations were not happening when they should. This release updates the API integration for it and fixes that behavior. Kudos to Matt for reporting it, see post 6909.
(s2Member Pro) Bug Fix: Updating the card with Stripe's pro-form sometimes gave an incorrect "missing billing method" error. Kudos to Corey, see post 7058.
(s2Member Pro) Small fix: Removed Bitcoin mention next to Stripe in Gateways list. Missed it in v191022.
v200221
(s2Member Pro) Bug Fix: In some rare cases, another plugin loaded Stripe's class before s2Member, so when s2 tried loading it there'd be an error. This release fixes the check for the class before trying to load it. See issue #1170
Note: s2Member won't have control over what version of the Stripe SDK was loaded by the other plugin. You'll need to get that other plugin to have an up-to-date version. If you don't have another plugin loading Stripe, this is not relevant to you.
(s2Member Pro) Bug Fix: When using a 100% off coupon, requiring no payment, the Stripe pro-form was still loading the card field and requiring it, preventing the free signup. That's fixed in this release. See issue #1171
(s2Member Pro) Bug Fix: The Stripe pro-form, when given an invalid card, didn't give a clear error message for it, and instead just "invalid parameter". Now it shows the correct card error, making it possible for the customer to try a different card to complete the payment.
(s2Member Pro) Feature Update: The Indian Rupee was added to the list of currency symbols.
(s2Member Pro) Feature Enhancement: The s2Member Pro add-on, not being a regular plugin was not uploadable via the WP plugin manager. This made it necessary to FTP, which is complicated for some site owners. In this release I made it possible for the plugin manager to upload or remove the Pro add-on.
Note: It still is not a regular plugin. The activation link or status in the plugins manager is irrelevant, but I couldn't find how to remove it. s2Member Pro activates automatically when its version matches the Framework's, and it'll be mentioned next to the Framework's version in the plugins manager.
v191022
(s2Member Pro) Feature Enhancement: The Stripe pro-forms can now handle 3D Secure 2 for Strong Customer Authentication, as required by the new European regulation that came into effect recently. Props to those in the beta testing group, especially Brice and Felix. See thread 5585.
(s2Member Pro) Feature Enhancement: The Stripe pro-form now has the card field inline, instead of opening a modal to enter it. Before it required clicking the link to open the modal, enter the card details, submit that, and then submit the pro-form. Now you enter the card details as part of the pro-form. See issue #588.
(s2Member Pro) Stripe Integration Updates: Upgraded the Stripe PHP SDK from v1.18 to v7.4.0, and the API from 2015-07-13 to 2019-10-08. Upgraded the integration from the Charges API to the latest Payment Intents API. Upgraded the card input from the old Stripe Checkout modal, to the new Stripe.js and Elements.
(s2Member Pro) Optimization: Stripe's JavaScript now only gets included if the page has a Stripe pro-form.
(s2Member Pro) Removed Stripe Bitcoin: Stripe dropped Bitcoin last year, it's not available anymore. This update removes the Bitcoin options and mentions from the s2 admin pages.
(s2Member Pro) Bug Fix: Subscriptions without at trial were showing a "trialing" status in Stripe for the first period. This behavior has now been solved. It will only say trialing when you set a trial period (free or paid) in your Stripe pro-form shortcode. See issue #1052.
(s2Member Pro) Bug Fix: The Stripe pro-form installments via the
rrtshortcode attribute were charging an extra payment before ending the subscription. There was an error in the time calculation for this. This is solved in this release. Props to Brice. See thread 5817.(s2Member Pro) Bug Fix: Some payments through the Stripe pro-form were creating a new Stripe customer when the user was already a customer. The Stripe customer ID was not being saved correctly in the user's profile. This is solved in this release. Props to demeritcowboy for reporting it.
v190822
(s2Member) PayPal Integration Update: PayPal deprecated the subscription modification button. Using the old possible values for this, now gives an error on PayPal's site. This button has been removed from the PayPal Standard integration in s2Member. Props to Tim for reporting it, see forum thread 5861, and issue #1157.
(s2Member) Bug Fix: PayPal would sometimes return the customer without the Custom Value expected by s2Member, incorrectly triggering an error. A small delay has now been added when needed to wait for PayPal to provide the missing value, so that the customer is met with the correct success message on return. Props to Josh Hartman for his help. See forum thread 5250.
(s2Member) Bug Fix: Google's URL shortening service has been discontinued. The s2Member integration with it was removed in this release. Props to Felix Hartmann for reporting it.
(s2Member) Feature Enhancement: The popular URL shortening services have been abused in spam emails, and this can cause your site's emails with shortened signup URLs to end up in the spam folder. It's now possible to disable URL shortening when trying to avoid this problem. Props to Felix Hartmann for suggesting it. See forum thread 5697.
(s2Member Pro) New Feature: It is now possible to use a custom URL shortener other than the defaults in the s2Member Framework. This is particularly useful to use YOURLS for your links, making them unique to your site, looking more professional and avoiding the spam filters issue mentioned above. For more info see this forum post.
v190617
(s2Member Pro) Authorize.Net Hash Upgrade: Authorize.Net announced the end-of-life for their MD5 Hash in favor of their new SHA512 Signature Key. Support for this has been added to s2Member Pro. The MD5 Hash is not provided by Authorize.Net any more, so the field for it in s2Member has been disabled. Props @krumch for his work. For further details see forum thread 5514.