s2Member Framework (Member Roles, Capabilities, Membership, PayPal Members)

Wordpress Plugin
Download latest - 221103

Download Stats

Today 58
Yesterday 117
Last Week 754
All Time 1,178,693
Banner 772x250

The best membership plugin! Over 11 years of experience, development, releases... Still going and growing!

Start your membership profits! Build your tribe, gather your followers, enroll your students, bring in your clients!

Enjoy the benefits of getting paid repeatedly for access to your site!

Brilliant "So glad I found this. It works brilliantly for our needs... love the seamless integration with PayPal. Everything we need. Thank you so much for creating this!" -zarverk2000

The best way to make money from your WordPress site!

Sell unlimited memberships, turn free subscribers into members (subscriber to member s. 2 member s2Member), with a single payment or recurring payments subscriptions.

Easy and quick to use. Protect your membership content in a moment, and a moment later be ready to get payments for member access!

Easy to configure and very flexible. Protect the whole site, nothing, or just parts, even member files for paid downloads!

Install s2Member now and make money!


So much capacity & great support "Im a novice and was able to quickly figure it out. When I got stuck I go to the support forum and Cristian is there with a quick answer to get me going again." -blueruck

The very best plugin and support service "Great plugin, neat, easy to configure, and with interesting security features. A special mention to Cristian whose support is awesome, fast, clear even to free members like myself" -aflorarte

Packed with features, but not required to use them all, just those you want. Some of them:

Member user levels and custom access capabilities Membership content protection (post, page, category, tag, etc) Protect anything served by WP (post types, URLs) Member file protection (sell downloads) Prevent member account sharing (limit IPs, simultaneous logins) Protect accounts (limit failed login attempts) Cool security/trust badge with your domain PayPal Standard buttons for membership payments (more in Pro) Automatic member access demotion at end of paid access time Tracking software integration (affiliates, etc) Email list services (Mailchimp, etc) Notifications (signups, payments, etc) Integrate with bbPress, BuddyPress for member communities Compatible with any well coded theme (Elementor, Divi, etc) Customize the WP login/registration look Custom redirection after member login Create custom profile fields for member accounts Customize the user welcome email And more!

Install and start using s2Member now!

Very Powerful Membership Plugin "This membership plugin does a lot and has many, many configuration options to achieve whatever you want... I received extremely quick and reliable support." -liltrucks

Simple, Compatible, Secure, and Versatile! "We are seriously impressed with this plugin and we highly recommend it... We have not found ANY limitations to what we are trying to accomplish... a very smooth process... straight-forward and user-friendly!... exceeded our expectations!" -tips4gamers

Excellent plugin "This plugin does everything it says on the box. It does it well... the functionality is absolutely spot on. The developers/maintainers are also active and helpful. Totally recommended!" -richardfoley

Best Membership Plugin Ive Used "I switched to s2 Member around 3 years ago after trying a few plugins. I found these other plugins inflexible and difficult to configure... Well worth investigating if you want a robust membership solution." -rnwhalley

Not needed to know any PHP code or be a developer. Only code needed is copy-paste wp shortcodes, like for the paypal buttons... But is also developer-friendly to customize your installation if wanted.

Some reasons to get s2Member Pro

Membership content dripping Stripe, PayPal Pro, Authorize.Net, ClickBank On-site one-step checkout with pro-forms (Stripe, PayPal, Auth.Net) Unlimited membership levels Membership renewal reminder emails Single-step member registration and payment with pro-forms Custom redirection after payment Coupon codes and gift/redemption codes Custom member offer redirections after login Pro API for new integrations Public members directory Members bulk import/update/exporter Multisite network support Login and registration forms to use in pages/posts Click here for more

The Best Membership Plugin "I have built with most Membership plugins and literally dozens using S2 Pro and I can tell you, bar none it is the best of all of them. Extremely powerful, anything you might want to do it can do... I highly recommend you try it out." -antwoords

Excellent plugin & top support "Weve used s2member pro on a few projects now & find it has met all our membership needs. Most impressive has been the support. Excellent communication, knowledgeable, friendly and super patient " -aaee6

Awesome Support "Ive been using s2Member for 9 years... Amazing support of a high-end plugin and much appreciated. This is one of the reasons I stick with s2Member. Support has always been great!" -graphichome

Wonderful Support "Above and beyond. Ive used this plugin for over ten years with various clients and whenever I need help, theyve helped find a solution." -germars

The free s2Member Framework integrates with PayPal Website Payments Standard (also free). Sell "Buy Now" or Membership access to your site. Restrict access to Roles, Capabilities, Posts, Pages, or anything else in WordPress.

Protect your WordPress Posts, Pages, Tags, Categories, URIs, BuddyPress, bbPress, and even portions of content within Posts, Pages, themes, plugins. Easily configurable and highly extensible. You can even protect downloadable files and streaming audio/video. Store files locally, or use s2Member's integration with Amazon S3/CloudFront.

s2Member is powered almost entirely by WordPress shortcodes, making advanced integrations quick and easy. Sell recurring (or non-recurring) subscriptions with lots of flexibility. Or sell "Buy Now" membership access in various ways. You can also sell specific Posts/Pages, sell member access to file downloads, or sell members Custom Capabilities that provide highly configurable access to specific portions of your content.

Install now s2Member and start making money!

Releases (153 )

Version Release Date Change Log
221103 2022-11-03

Bug Fix: Removed latest changes to gateway notification and return handlers, that were causing difficulties with member access in some scenarios.

221031 2022-10-31

Bug Fix PayPal IPNs being ignored since last release.


221028 2022-10-27
220925 2022-09-29
220809 2022-08-09

= v160801 =

(Maintenance Release) Upgrade immediately.

220421 2022-04-21

= v160801 =

(Maintenance Release) Upgrade immediately.

220318 2022-03-18

= v160801 =

(Maintenance Release) Upgrade immediately.

210526 2021-05-26

= v160801 =

(Maintenance Release) Upgrade immediately.

210208 2021-02-08

= v160801 =

(Maintenance Release) Upgrade immediately.

201225 2020-12-25

= v160801 =

(Maintenance Release) Upgrade immediately.

200301 2020-03-01

= v160801 =

(Maintenance Release) Upgrade immediately.

200221 2020-02-21

= v160801 =

(Maintenance Release) Upgrade immediately.

191022 2019-10-22

= v160801 =

(Maintenance Release) Upgrade immediately.

190822 2019-08-22

= v160801 =

(Maintenance Release) Upgrade immediately.

190617 2019-06-17

= v160801 =

(Maintenance Release) Upgrade immediately.

170722 2018-02-19

= v160801 =

(Maintenance Release) Upgrade immediately.

170524 2017-06-09

= v160801 =

(Maintenance Release) Upgrade immediately.

170221 2017-02-21

= v160801 =

(Maintenance Release) Upgrade immediately.

161129 2016-12-08

= v160801 =

(Maintenance Release) Upgrade immediately.

160801 2016-08-01

= v160801 =

(Maintenance Release) Upgrade immediately.

160503 2016-05-04

= v160503 =

(Maintenance Release) Upgrade immediately.

160424 2016-04-24

= v160424 =

(Maintenance Release) Upgrade immediately.

160423 2016-04-23

= v160423 =

(Maintenance Release) Upgrade immediately.

160303 2016-03-04

= v160303 =

(Maintenance Release) Upgrade immediately.

160120 2016-01-20

= v160120 =

(Maintenance Release) Upgrade immediately.

151218 2015-12-18

= v151218 =

(Maintenance Release) Upgrade immediately.

151210 2015-12-10

= v151210 =

(Maintenance Release) Upgrade immediately.

150925 2015-09-26

= v150925 =

(Maintenance Release) Upgrade immediately.

150827 2015-08-27

= v150827 =

(Maintenance Release) Upgrade immediately.

150722 2015-07-23

= v150722 =

(Maintenance Release) Upgrade immediately.

150311 2015-03-11

= v150311 =

(Maintenance Release) Upgrade immediately.

150225 2015-02-26

= v150225 =

(Maintenance Release) Upgrade immediately.

150203 2015-02-03

= v150203 =

(Maintenance Release) Upgrade immediately.

150102 2015-01-02

= v150102 =

(Maintenance Release) Upgrade immediately.

141007 2014-10-08

= v141007 =

(Maintenance Release) Upgrade immediately.

140921 2014-09-21

= v140921 =

(Maintenance Release) Upgrade immediately.

140909 2014-09-09

= v140909 =

(Maintenance Release) Upgrade immediately.

140816 2014-08-16

= v140816 =

(Maintenance Release) Upgrade immediately.

140725 2014-07-26

= v140725 =

(Maintenance Release) Upgrade immediately.

140614 2014-06-14

= v140614 =

(Maintenance Release) Upgrade immediately.

140603 2014-06-04

= v140603 =

(Maintenance Release) Upgrade immediately.

140520 2014-05-21

= v140520 =

(Maintenance Release) Upgrade immediately!

140423 2014-04-24

= v140423 =

(Maintenance Release) Upgrade immediately.

140409 2014-04-10

= v140409 =

(Maintenance Release) Upgrade immediately.

140328 2014-03-29

= v140328 =

(Maintenance Release) Upgrade immediately.

140105 2014-01-09

= v140105 =

(Maintenance Release) Upgrade immediately.

131126 2013-11-26

= v131126 =

(Maintenance Release) Upgrade immediately.

131109 2013-11-09

= v131109 = (Maintenance Release) Upgrade immediately.

131026 2013-10-26

= v131026 = (Maintenance Release) Upgrade immediately.

131025 2013-10-25

= v131025 = (Maintenance Release) Upgrade immediately.

130816 2013-08-16

= v130816 = (Maintenance Release) Upgrade immediately.

130802 2013-08-02

= v130802 = (Maintenance Release) Upgrade immediately.

130801 2013-08-01

= v130801 = (Maintenance Release) Upgrade immediately.

130731 2013-08-01

= v130731 = (Maintenance Release) Upgrade immediately.

130617 2013-06-17

= v130617 = (Maintenance Release) Upgrade immediately.

130513 2013-05-13

= v130513 = (Maintenance Release) Upgrade immediately.

130510 2013-05-11

= v130510 = (Maintenance Release) Upgrade immediately.

130406 2013-04-07

= v130406 = (Maintenance Release) Upgrade immediately.

130404 2013-04-05

= v130404 = (Maintenance Release) Upgrade immediately.

130221 2013-02-21

= v130221 = (Maintenance Release) Upgrade immediately.

130220 2013-02-20

= v130220 = (Maintenance Release) Upgrade immediately.

130214 2013-02-14

= v130214 = (Maintenance Release) Upgrade immediately.

130213 2013-02-13

= v130213 = (Maintenance Release) Upgrade immediately.

130207 2013-02-07

= v130207 = (Maintenance Release) Upgrade immediately.

130203 2013-02-04

= v130203 = New release. Please see changelog for important details.

130123 2013-01-24

= v130123 = Maintenance release. Upgrade immediately.

130121 2013-01-21

= v130121 = Maintenance release. Upgrade immediately.

130116 2013-01-17

= v130116 = Maintenance release. Upgrade immediately.

121213 2012-12-14

= v121213 = Maintenance release. Upgrade immediately.

121204 2012-12-05

= v121204 = Maintenance release. Upgrade immediately.

121201 2012-12-02

= v121201 = Maintenance release. Upgrade immediately.

121023 2012-10-24

= v121023 = Maintenance release. Upgrade immediately.

120703 2012-07-03

= v120703 = Maintenance release. Upgrade immediately.

120622 2012-06-22

= v120622 = Maintenance release. Upgrade immediately.

120608 2012-06-08

= v120608 = Maintenance release. Upgrade immediately.

120601 2012-06-01

= v120601 = Maintenance release. Upgrade immediately.

120517 2012-05-17

= v120514 = Maintenance release. Upgrade immediately.

120514 2012-05-15

= v120514 = Maintenance release. Upgrade immediately.

120309 2012-03-09

= v120309 = Upgrade immediately.

120308 2012-03-08

= v120308 = Upgrade immediately.

120304 2012-03-05

= v120304 = Two bug fixes. Upgrade immediately.

120301 2012-03-01

= v120301 = Two bug fixes. Upgrade immediately.

120219 2012-02-19

= v120219 = Link updates and a compatibility fix. Upgrade immediately.

120213 2012-02-16

= v120213 = Optimization and a few bug fixes. Upgrade immediately.

111220 2011-12-20
111216 2011-12-19
111206 2011-12-06
111105 2011-11-06
111029 2011-10-29
111017 2011-10-17
111011 2011-10-11
111003 2011-10-03
111002 2011-10-03
110927 2011-09-27
110926 2011-09-27
110915 2011-09-15
110913 2011-09-14
110912 2011-09-13
110815 2011-08-15
110812 2011-08-12
110731 2011-08-01
110710 2011-07-10
110709 2011-07-09
110708 2011-07-08
110620 2011-06-20
110617 2011-06-17
110606 2011-06-07
110605 2011-06-05
  • (s2Member). Bug fix. If File Download protection was enabled, changes introduced in the previous release, were causing some site Administrators to receive a "File Download Limit Exceeded" error under the right circumstances. This has been corrected in the release of s2Member v110605.
110604 2011-06-05

( instead of s2Member v3.6 ) = * (s2Member/s2Member Pro). Versioning. Starting with this release, s2Member and s2Member Pro will be released with dated versions following this format: yymmdd. The version for this release is: 110604. * (s2Member/s2Member Pro). s2Member Security Badge. An s2Member Security Badge ( optional ), can be used to express your site's concern for security; demonstrating to all Users/Members that your site ( and the s2Member software ), takes security seriously. However, in order to qualify your site, you MUST generate a Security Encryption Key and pass other security standards. For more information, please check your Dashboard under: s2Member -> General Options -> Security Badge. * (s2Member/s2Member Pro). Custom Fields For BuddyPress. s2Member can now integrate your Custom Fields into BuddyPress. Please check your Dashboard for all configuration options. You'll find BuddyPress integration available here: DashBoard -> s2Member -> General Options -> Custom Registration Fields. * (s2Member Pro). PayPal Pro API Updates (First Payment / Recurring Profile Behavior). s2Member's integration with the PayPal Pro API has been updated to API v71.0. There is also a new option available to PayPal Pro Merchants. s2Member now provides site owners the abililty to control the way the first payment in a Recurring Profile is billed. (1)Consolidate w/ Recurring Profile or (2) Real-Time / Direct Pay ( mission critical ) . For further details, please check your Dashboard under: s2Member -> PayPal Options -> Account Details. We recommend: Consolidate w/ Recurring Profile, because this keeps all charges associated with a particular Customer organized in your PayPal account. No matter which option you choose, a first Initial Payment ( when applicable ), will always be charged immediately ( improved in this release ). In cases where it is absolutely critical that a Customer NOT gain access until their first payment has been fully captured, choose: Real-Time / Direct Pay, which tells s2Member to authorize/capture the first payment in real-time during checkout, instead of consolidating it into the Recurring Profile. * (s2Member). bbPress 2.0+. s2Member has been integrated with preliminary support for bbPress 2.0+ ( i.e. the new plugin variation for WordPress ). Please check your Dashboard, under: s2Member -> Other Integrations for further details and a list of current limitations. * (s2Member/s2Member Pro). Field Labels. Some additional for="" attributes in all Pro Form templates. This improves the reliability of s2Member's JavaScript validation routines. Existing s2Member Pro Customers with modified Pro Form templates MUST update their for="" attributes in order for s2Member's JavaScript API to properly validate Customer data entry in this new release. If you're running custom Pro Form templates, check this directory for the updated default templates, so you can merge any changes you've made yourself: /s2member-pro/includes/templates/forms/. * (s2Member). Amazon S3 Support Amazon Simple Storage Service ( Amazon S3 ). Amazon S3 is storage for the Internet. It is designed to make web-scale computing easier for developers. Amazon S3 provides a simple web services interface that can be used to store and retrieve any amount of data, at any time, from anywhere on the web. It gives developers access to the same highly scalable, reliable, secure, fast, inexpensive infrastructure that Amazon uses to run its own global network of web sites. s2Member has been integrated with Amazon S3, so that ( if you wish ), instead of using the /s2member-files/ directory, you can store all of your protected files inside an Amazon S3 Bucket. * (s2Member/s2Member Pro). jQuery. Tested s2Member against jQuery version 1.4.4+, including jQuery v1.6. Fixed a bug with .attr() returning undefined in jQuery v1.6. * (s2Member). Bug fix. Using the Replacement Code %%current_user_login%% in a Special Redirection URL for your Login Welcome Page would sometimes result in your Home Page being protected inadvertently, depending on configuration. * (s2Member/s2Member Pro). IP Address Collection. s2Member now records the original IP Address of a each User, for tracking purposes. In previous versions of s2Member, in order to integrate some tracking systems, ( such as iDevAffiliate's server-side call option ), it was required to use the custom="" Attribute of your Shortcode to grab a Customer's IP Address. That's no longer required, as Replacement Codes are now made available throughout all aspects of s2Member; giving you easy access to the User's IP Address. * (s2Member Pro). Bug fix. Buy Now Coupon descriptions for Specific Post/Page Access were returning invalid details, referencing installments. This bug has been resolved. * (s2Member Pro). SSL. Allow ?s2-ssl without a value ( accept as true ). This has been implemented for advanced site owners running s2Member Pro Forms. * (s2Member/s2Member Pro). API Functions. New API functions for user Level, Role, Custom Capabilities. These will be documented in our official source code documentation system for s2Member ( also new ). Source code documentation will become available in the s2Member forums, shortly after the official public release of this version. * (s2Member/s2Member Pro). New Shortcode Attribute. For PayPal Buttons/Forms, you can now apply Shortcode lc="US". Optional 2 character Locale Code ( i.e. Country Code ). This controls the interface language used if/when a Customer chooses PayPal Express Checkout as their payment method, or upon clicking a Standard PayPal Button. If unspecified, the language is determined by PayPal, when possible, defaulting to US english when not possible. * (s2Member/s2Member Pro). New Shortcode Attribute. For PayPal Buttons/Forms, you can now apply Shortcode rrt="". Regular Recurring Times ( i.e. a fixed number of installments ). Only valid w/ Membership Level Access. When unspecified ( the default ), any recurring charges will remain ongoing until cancelled, or until payments start failing. If this is set to 1 or higher the regular recurring charges will only continue for X billing cycles, depending on what you specify. This is only valid when rr="1" for recurring "Subscriptions". Please note that a fixed number of installments, also means a fixed period of access. If a Customer's billing is monthly, and you set rrt="3", billing will continue for only 3 monthly installments. After that, billing would stop, and their access to the site would be revoked as well ( based on your EOT Behavior setting under: s2Member -> PayPal Options ). * (s2Member/s2Member Pro). New Shortcode Attribute. You can now apply rra="1". This has to do with reattempting failed payments. It has slightly different meanings and option values, depending on whether it's used for a PayPal Button or a PayPal Pro Form Shortcode. For instance, for PayPal Pro Form Shortcodes, this also controls MAXFAILEDPAYMENTS. Please check your Dashboard under: s2Member -> PayPal Buttons/Forms -> Shortcode Attributes Explained. * (s2Member w/s2Member Pro installed). New Shortcode Attribute. You can now apply success="http://..." Attribute to Standard PayPal Buttons. Success Return URL ( optional ). s2Member handles this automatically for you. However, if you would prefer to take control over the landing page after checkout ( i.e. your own custom Thank-You Page ), you can. If supplied, this must be a full URL, starting with http://. Note, s2Member will NOT use this value if an existing account holder is being modified. s2Member handles account updates ( i.e. billing modification ) in a more dynamic way. Your Success Return URL is only applied to (new) Customers. This feature is enabled with s2Member Pro installed. * (s2Member/s2Member Pro). Bug fix. When using ampersands in the success="" Attribute, it would break Success Return URLs on some WordPress installations. s2Member now converts these internally to avoid the issue. * (s2Member). Redirection Status Codes. s2Member's default behavior ( for good reason ), is to send a 301 redirection status when it moves unauthorized Visitors to your Membership Options Page. The reasons for this are well founded. This prevents duplicate content warnings from search engine spiders. However, some web browsers ( like Safari ) make an attempt to cache a 301 redirection into memory, thereby preventing some browsers from reaching the proper areas of your site after logging in, had they been redirected to the Membership Options Page prior. s2Member resolves this problem by detecting all major browser engines ( i.e. msie|trident|gecko|webkit|presto|konqueror|playstation ) and sending web browsers a 302 redirection, while still sending spiders/crawlers ( such as the Google bot ), the proper 301 redirection status. For further details, please check this thread. * (s2Member). Alternative Views. Alternative View Restrictions ( now compatible with Ajax search plugins ). For further details, please check this thread. * (s2Member Pro). Bug fix. Corrected first/last name updates during Pro Form checkout/upgrade routines. s2Member Pro should use ( and update to ) the values submitted, even when already logged-in. * (s2Member/s2Member Pro). Bug fix. s2Member was not properly filling the $_GET["s2member_level_req"] parameter upon certain File Download Restrictions. For instance, s2Member would sometimes return s2member_level_req=0, even though you protected a File inside a Custom Capability and/or Member Level sub-directory. This bug has been corrected. * (s2Member/s2Member Pro). Time Zone. s2Member now displays Registration Dates in your list of Users with date_i18n() for localized time, as opposed to UTC time. UTC time is still the default time zone ( internally ), this is built into the WordPress core. However, certain dates displayed on-site are easier to understand in localized time, based on your WordPress General Settings. * (s2Member). Password Confirmation. s2Member now provides a Password confirmation field on the Standard Registration Form, and in other key areas, such as Profile Editing Panels. * (s2Member/s2Member Pro). Password Strength Meters. This version adds Password strength meters in various places ( where it's helpful ); including s2Member Pro Forms, and even the default Registration Form for WordPress. * (s2Member). Multisite Registration. Cleaned up the default Multisite Registration Form ( i.e. /wp-signup.php ), with structural CSS to better support s2Member features. * (s2Member/s2Member Pro). SI Captchya. s2Member now contains default CSS styles ( just two lines ), and JavaScript validation for the popular SI Capchya plugin; and also for it's own built-in support of Google's reCAPTCHA service for s2Member Pro Forms. * (s2Member/s2Member Pro). Custom Field Default Values. It's now possible to set default text values for single-line and multi-line input/textarea fields too. This only affects Custom Fields you configure with s2Member. * (s2Member/s2Member Pro). Custom Fields By Section. Custom Fields by section ( i.e. dividers ). It's now possible to configure certain Custom Fields, so that they start a new section. Your sections can be simple dividing lines, or you can give them a title that will appear on your Registration and Profile Editing forms. * (s2Member). Bug fix. s2Member was creating window focus/blur issues on Profile updates through its Stand-Alone version of the Profile Editing Panel ( i.e. when it was popped open in a new window ). This was causing odd behavior Firefox 4. * (s2Member/s2Member Pro). Remove First/Last Name. It is now possible to turn off First/Last/Display Name, on Registration and Profile Editing forms. For configuration options, please check your Dashboard, under: s2Member -> Custom Registration Fields. * (s2Member Pro). Data Prefill. s2Member Pro is now capable of prepopulating some Pro Form fields when/if existing Users buy a Specific Post/Page. * (s2Member/s2Member Pro). Bug fix. Fixed nested Custom Registration Field labels for multi option check boxes/radios. Firefox 4+ had issues with this. * (s2Member/s2Member Pro). Registration Link Expiration. The default is built-in, it's (2) days. We don't recommend changing this unless you know what you're doing. Some developers requested the ability to change this dynamically. s2Member now makes this Filter available: ws_plugin__s2member_register_link_exp_time. * (s2Member Pro). Automatic Upgrade Routine. s2Member Pro now places your site into maintenance mode ( temporarily ) during an s2Member Pro Upgrade routine. * (s2Member). New API Notification. New "Modification" Notification now available under: s2Member -> API Notifications. Say that three times fast! * (s2Member/s2Member Pro). MailChimp / AWeber improvements. This release fixes several bugs related to Automatic Unsubscribes, general list removals, and introduces a new feature call Automatic List Transitions. For further details, please check your Dashboard under: s2Member -> API List Servers. * (s2Member). Bug fix. PayPal Button Codes should have been including a charset input variable for UTF-8 encoding. This bug has been corrected now. If you've had trouble getting special characters to appear properly in the PayPal interface, this version should correct those issues for you. * (s2Member/s2Member Pro). Animated Processing... Buttons. This release adds simple animated "processing..." messages to all form submission buttons. * (s2Member/s2Member Pro). MailChimp Interest Groups. Ability to use Interest Groups with Mailchimp List IDs. For examples, please check your Dashboard under: s2Member -> API List Servers -> MailChimp. * (s2Member/s2Member Pro). New EOT Behavior Option. Automatic Extension of EOT Time whenever a Customer is upgrading a paid Subscription? For configuration options, please check your Dashboard under: s2Member -> PayPal Options -> EOT Behavior. * (s2Member/s2Member Pro). Log Entries. WordPress :: s2Member :: s2Member Pro versions now all reported in each log entry. In addition, s2Member now provides logging for all communications with MailChimp and AWeber too. * (s2Member/s2Member Pro). s2Member Now Requires WordPress v3.1+. Backward compatibility for the WordPress 3.0.x series has been removed. Also removed all include() references to /wp-includes/registration.php. Deprecated in WordPress v3.1. This file no longer needs to be included. * (s2Member/s2Member Pro). s2Member Updates. New built-in news updates from s2Member developers. This appears in your Dashboard automatically, inside the s2Member menu panels. * (s2Member/s2Member Pro). Bug fix. Custom Post Types were not appearing in s2Member's Specific Post/Page Button and Form Generators, even when configured properly. This bug has been resolved. * (s2Member/s2Member Pro). Documentation. Built-in documentation updated throughout. * (s2Member/s2Member Pro). UI Panels. Some minor UI improvements.

3.5.8 2011-04-11
  • (s2Member). Bug fix. The Shortcode version of s2Member's Profile Editing Panel ( i.e. [s2Member-Profile /] ) was not validating input fields properly. This bug was has been resolved in v3.5.8+.
  • (s2Member). Compatibility. s2Member now requires PHP v5.2.3+ instead of just PHP v5.2+. This is because call_user_func_array() in early versions of PHP 5.2 did not support static class methods with a scope resolution operator. If you've had trouble getting s2Member v3.5+ to run on your server, this is likely the cause. Please make sure you're running PHP v5.2.3+.
  • (s2Member). Bug fix. PayPal Button Encryption was failing under some circumstances, because the PayPal API Method BMCreateButton requires two decimal places at all times. The bug fix in this release does NOT require any changes to your Shortcode attributes. Rather, the encryption routine will now automatically convert numeric dollar amounts during encryption.
  • (s2Member Pro). Compatibility. Starting with s2Member Pro v3.5.8+, Pro Cancellation Forms will automatically detect Customers that may have signed up with a Standard PayPal Button, and provide the Customer with a link & instructions about how to cancel their "Subscription" via PayPal. This makes it possible for site owners upgrading to s2Member Pro, to provide their Customers with just ONE Cancellation Form, which has the ability to consider both PayPal Standard "Subscriptions", and also "Recurring Profiles"; which are used by s2Member Pro Forms.
3.5.7 2011-03-26
  • (s2Member/s2Member Pro). Bug fix. A bug was found in the c_ws_plugin__s2member_systematics_sp class file. This bug was affecting s2Member's Security Gate for WordPress Pages under certain unique circumstances. One symptom of this bug ( seen with s2Member Pro installed ), was to experience a strange disappearance of (s2) Lock Icons in your list of Pages, whenever the first Page in your list was the Login Welcome Page that you configured for s2Member.
  • (s2Member Pro). Bug fix. On a Multisite Network, s2Member Pro Forms were generating an erroneous error Please enter a username during a Billing Modification under certain circumstances. This has been resolved in s2Member Pro v1.5.7+.
  • (s2Member Pro). Bug fix. s2Member Pro Export Files ( i.e. CSV export of Users/Members ) sometimes contained Custom Registration Fields ( e.g. at the end of each CSV line ) in a different order for each User/Member. This was NOT causing any negative effects with s2Member Pro during import/export. However, it was causing some confusion and extra work for site owners that use s2Member's export files for other operations. This has been corrected in the release of s2Member Pro v1.5.7. For more information, please see this thread.
3.5.6 2011-03-23
  • (s2Member). Bug fix. s2Member's File Download routine was failing on some installations running WordPress with Windows IIS 7. This was related to the fact that Windows IIS 7 does not like it when scripts use Content-Length in conjunction with Transfer-Encoding: chunked. This has been resolved in s2Member v3.5.6+.
  • (s2Member/s2Member Pro). Bug fix. s2Member's ability to force SSL by adding the Custom Field `s2member_force_ssl
3.5.5 2011-03-18
  • (s2Member). New feature. It is now possible to configure Custom Registration Fields with s2Member that are NOT actually visible during the registration process. Instead, they will only be visible after registration ( i.e. during a Profile edit ). In order to accomplish this, you will need to choose this option from the dropdown menu for a specific Custom Registration Field that you configure with s2Member. This option is in the dropdown menu entitled: Allow Profile Edits?. You can choose: Yes ( editable after registration / invisible during registration ).
  • (s2Member Pro). Feature Improvement. The display of the Coupon Code field on Pro Forms has been improved ( i.e. enhanced with an icon and the "Apply Coupon" button is now floated to the right to save space ).
  • (s2Member Pro). Compatibility / Bug fix. This is related to some bug reports regarding 500 Internal Server Errors. s2Member is now compatible ( i.e. capable of running in concert with ) other plugins that attempt actions dealing with $current_user on the plugins_loaded Hook for WordPress. In an ideal world, other plugins should NOT be doing this, because the WordPress core framework does not initialize $current_user until just before the init Hook is fired, which comes after the plugins_loaded Hook. However, in an effort to maximize s2Member's compatibility, s2Member has been modified to work around this potential bug, by delaying the initialization of its Filter against user_has_cap just a bit. If you were experiencing 500 Internal Server Errors in previous releases of s2Member, you will want to upgrade to this version for improved compatibility with other plugin combinations.
  • (s2Member Pro). Bug fix. s2Member Pro Forms for Free Registration were not picking up Custom Registration Fields configured at specific Membership Levels; other than Level #0. This has been resolved in s2Member Pro v1.5.5+.
  • (s2Member Pro). Feature Improvement. This change is related to the basic ( default ) CSS rules applied to Pro Forms generated by s2Member Pro. In this release, Pro Forms now utilize the CSS3 box-sizing specification to correct slight imperfections in the width of forms fields ( i.e. the difference between select and input ). This specification is supported by all modern browsers, including IE8. s2Member also degrades with a "best guess" workaround for IE 7 browsers. Reference article here.
  • (s2Member/s2Member Pro). Roadmap. Barring any serious bug reports, this will be the last release in the 3.5.x series of s2Member and the 1.5.x series of s2Member Pro. The next releases will include substantial changes ( internally ) related to the handling of variables; further optimizing the entire codebase. In addition, there are plans to integrate some new functionality for Content Dripping in the next release. The next releases should be ready around the end of April 2011.
3.5.4 2011-03-14
  • (s2Member). Bug fix. When `s2member_force_ssl
3.5.3 2011-03-14
  • (s2Member). Feature improvement. s2Member's Bridge integration with bbPress. It is now possible to allow bbPress forums to be available to the public ( with read-only access ), and to restrict participation access by Level # instead of locking everything down entirely. You now have the choice whenever you install and/or re-install the bbPress Bridge/plugin for s2Member. In addition, s2Member makes a new API function available for bbPress current_wp_user_is(). This will be useful to developers integrating bbPress with s2Member in creative ways. For further details, please check your Dashboard under: s2Member -> API Bridges -> bbPress.
  • (s2Member Pro). Feature improvement. s2Member Pro Forms for Free Registration access are now more versatile. It is now possible to configure your Pro Form Shortcode so that Free Registrants come into your site with something other than the default Level #0 Access Level. For example, if you need to, you can change the Form Attribute level="0", to level="1", attach Custom Capabilities with the ccaps="" Attribute, and even limit this access to a certain timeframe with tp="30" tt="D" ( i.e. 30 Days ). So this Form is very flexible now. It can be used to allow free access to just about any aspect of your service. For more information on this topic, please check your Dashboard under: s2Member -> PayPal Pro Forms -> Free Registration Forms. Also works with Pro Forms for Authorize.Net.
  • (s2Member). New Filters. s2Member v3.5.3 adds two new WordPress Filters that allow developers to further customize the inner workings of s2Member ( among 300+ other existing Filters already established for s2Member ). You will find these two new Filters in the source code of the free version: wp_register_location and ws_plugin__s2member_redirection_url_after_modification. For Multisite Networks, there is also this Filter available: wp_signup_location. If you're a novice site owner, please keep tabs on our forums for examples on how to utilize these new Filters. We're sure this topic will come up.
  • (s2Member). New Filters. s2Member v3.5.3 adds two new WordPress Filters that allow developers to further customize tinyURLs generated for email confirmations. You will find these two new Filters in the source code of the free version: ws_plugin__s2member_register_link_gen_alternative and ws_plugin__s2member_sp_access_link_gen_alternative. I've posted an example of how to use these in the forums. So these new Filters make it possible to use a shortening service that you prefer over tinyURL ( but you will have to integrate it yourself ). In a later release, we'll try to add some pre-integrated alternatives into the Dashboard for s2Member.
  • (s2Member). New Replacement Code. s2Member's EOT/Deletion Notification now provides additional detail about the actual event that triggers this API Notification through a new Replacement Code: %%eot_del_type%%. For further details on this new Replacement Code, and a list of possible values, please check your Dashboard under: s2Member -> API Notifications -> EOT/Deletion Notifications.
  • (s2Member). Bug fix. A common error that site owners see in s2Member's log file is unable to verify POST vars. This is due to issues with various hosting companies not being configured with either cURL and/or allow_url_fopen -> on. However, we recently discovered that WordPress ( i.e. via the WP_Http class ) will attempt to officially verify the SSL certificate issued through remote connections to Payment Gateways integrated with s2Member. This can cause an additional roadblock on some servers, because often they are not capable of officially verifying SSL certificates. They lack the extended configuration necessary to do so. In other words, this default behavior in the WP_Http class file can ultimately lead to unable to verify POST vars in s2Member. To workaround this compatibility issue, s2Member now specifies `sslverify
3.5.2 2011-03-03
  • Framework updated; general cleanup.
  • (s2Member/s2Member Pro). Optimizations. Further internal optimizations applied through configuration checksums that allow s2Member and s2Member Pro to load with even less overhead now.
  • (s2Member/s2Member Pro). Optimizations. Further internal optimizations applied with Hook priorities that allow s2Member and s2Member Pro to load dynamic CSS/JS files with even less overhead now.
  • (s2Member). Bug fix. Due to changes in WordPress 3.1+, s2Member was including it's JavaScript routines twice on the /wp-login.php page. This has been resolved in s2Member v3.5.2+.
  • **(s2Member). Hook change. Attn WP developers: s2Member's Hook _ws_plugin__s2member_force_ssl_buffer_tags is now _ws_plugin__s2member_force_ssl_buffer_tags_array.
  • **(s2Member). API Constant change. Attn WP developers: s2Member's API Constant S2MEMBER_CURRENT_USER_SUBSCR_ID is now accompanied with a new API Constant S2MEMBER_CURRENT_USER_SUBSCR_OR_WP_ID. The values returned by these API Constants have changed (slightly). For further details, check your Dashboard under: s2Member -> API Scripting -> API Constants.
  • (s2Member Pro). Bug fix. s2Member's ccBill DataLink routines were sometimes generating the error Too Many Connections due to an invalid data storage routine under a delayed scenario. This has been resolved in s2Member v3.5.2+.
3.5.1 2011-02-27
  • (s2Member). Bug fix. Errors regarding class-autoloader.inc.php / glob(), which were associated with installation servers running NFS ( network file systems ) have been corrected in this release.
  • (s2Member). Bug fix. Errors regarding ws_plugin__s2member_trim_deep() during an upgrade from previous versions of s2Member have been corrected in this release.
3.5 2011-02-26
  • (s2Member/s2Member Pro). WordPress 3.1. Updated for full compatibility with WordPress 3.1 ( s2Member also remains compatible with the WordPress 3.0.x series ).
  • (s2Member/s2Member Pro). Speed Optimizations. s2Member's entire codebase has been re-organized into PHP classes containing s2Member's static functions ( dev note: all of s2Member's Hooks/Filters remain as they were ). This new infrastructure allows s2Member to take full advantage of PHP's built-in SPL Autoload extension. This means s2Member's source code is loaded ( only on-demand ) as function calls are made within core routines. So instead of loading s2Member's entire codebase into WordPress; only the objects/methods needed during the processing of particular page will be included. Long story short, this release of s2Member is much faster than previous versions. For advanced site owners, this will make it more feasible to run s2Member in concert many other plugins; even on shared hosting.
  • (s2Member). New feature. You can now force WordPress to use your Membership Labels instead of referencing them by s2Member Level #. For further details on this topic, check your Dashboard under s2Member -> General Options -> Membership Levels/Labels.
  • (s2Member). Profile Shortcode. s2Member now provides a built-in Shortcode ( [s2Member-Profile /] ) that generates an inline Profile Modification Form; which can be inserted into any Post/Page ( such as your Login Welcome Page ) or even into a Text Widget if you like. This feature is ( in addition to ) the existing /?s2member_profile=1 stand-alone version that has always been available with s2Member.
  • (s2Member). New feature. s2Member now supports Remote Header Authorization on File Downloads ( optional ). Remote Header Authorization allows access to file downloads through an entirely different approach ( again, using this is 100% optional ). Instead of asking the Member to log into your site through a browser, a Member can be prompted automatically, to log in through HTTP Header Authorization prompts; which is the same technique used in more traditional security systems via .htaccess files. In other words, Remote Header Authorization makes it possible for your Members to access files through remote applications that may NOT use a browser. This is often the case when a Member needs to access protected files through a software client like iTunes; typical with podcasts. For further details, please check your Dashboard under s2Member -> Download Options -> Remote Auth / Podcasting.
  • (s2Member). New feature. s2Member now supports a new option in its Login/Registration Design panel. If you have WordPress 3.1+ installed, you can add your own raw HTML/PHP code to the very bottom of your default Login/Registration Forms with s2Member. Please check your Dashboard under: s2Member -> General Options -> Login/Registration Design.
  • (s2Member). New feature. You can now tell s2Member to encrypt your PayPal Buttons automatically for added security. When this feature is enabled, all of your PayPal Button Shortcodes will produce encrypted PayPal Buttons. This improves security against fraudulent transactions. To turn this feature on, please log into your Dashboard and navigate to s2Member -> PayPal Options -> Account Details. You'll need to provide s2Member with your PayPal API Username/Password/Signature; and then enable Button Encryption. Additional instructions are provided in your WordPress Dashboard. NOTE: This feature does NOT require you to have a PayPal Pro account. If you do, that's fine, but it's not a requirement. Also, this particular feature is ONLY applicable to PayPal Buttons ( it does NOT work with Pro Forms, nor does it need to ).
  • (s2Member Pro). CSV Exportation. s2Member now provides two different export formats. 1. Default CSV ( for easy re-importation ). 2. Easy-Read CSV ( improved readability; CANNOT be re-imported ). In addition to these new options, ALL CSV export formats now include column headers too. This makes CSV files easier to read inside applications like MS Excel or OpenOffice/Calc.
  • (s2Member Pro). Authorize.Net. s2Member Pro now provides support for Authorize.Net integrations. Authorize.Net is a leading provider of payment gateway services, managing the submission of billions of transactions to processing networks on behalf of merchant customers. Authorize.Net is a solution offered by the CyberSource Corporation, a wholly owned subsidiary of Visa (NYSE: V).
  • (s2Member Pro). ccBill. s2Member Pro now provides support for ccBill integration. ccBill is a great choice when you need to process transactions discreetly on an adult-oriented site. Drawing on its years of experience and proven payment processing platform, ccBill has a solution that will not only meet the requirements of your consumers, it will also help address the specific needs of your business.
  • (s2Member Pro). New feature. s2Member now allows for the inclusion of the Pro Login Widget directly into a theme/plugin file ( optional ). Example usage: <?php echo s2member_pro_login_widget(); ?>. It is also possible to configure widget options dynamically. For further details, please check the documentation inside this file: /s2member-pro/includes/functions/api-functions.inc.php.
  • (s2Member/s2Member Pro). Optimization. If/when s2Member's logging/debugging mechanisms are enabled through the Dashboard, s2Member is now capable of archiving its own log files. Oversize log files ( i.e. larger than 2MB ) are automatically renamed with ...-ARCHIVED-{time}.log to prevent s2Member from creating ridiculously large log files that may have otherwise built up over a longer period of time.
  • (s2Member/s2Member Pro). New Profile field. A new drop-down menu has been added to the administration editing panel for User/Member Profiles. This new drop-down menu allows a site owner to specify which Payment Gateway a Member's payments are associated with. s2Member will automatically configure this field for you, but it is editable none the less. NOTE: If you are upgrading from a previous version of s2Member, you may notice that s2Member will NOT have this information on file for any existing Members that you obtained prior to installing s2Member v3.5+. You may want to go through and update the value of this field for each Member after upgrading. That being said, this new field is only provided for clarity; and for future compatibility. In other words, there is no functionality lost if the Payment Gateway field is left blank for previously existing Members.
  • (s2Member). New feature. s2Member now supports a new Replacement Code for Login Redirection URLs, and also for URI Restrictions ( %%current_user_ccaps%% ). This is the current User's set of Custom Capabilities. If the current User has multiple Custom Capabilities, they will be separated by hyphens; allowing this string to be used in the formulation of slugs for a Special Login Redirection URL; which could be configured differently for each Custom Capability Package that you offer.
  • (s2Member). New feature. s2Member can now automate un-subscribe/opt-out removals for any List Servers that you've integrated ( i.e. MailChimp, AWeber ). s2Member is also capable of handling everything based on your own personal configuration preferences. You can choose which Events you consider grounds for List Removal. For further details, please check your Dashboard under: s2Member -> API / List Servers -> Automate Un-Subscribes. During a paid Subscription Modification, it also possible to have Members un-subscribed from Lists at their existing Membership Level#, while at the same time; subscribing them to Lists you've configured at the Membership Level they are upgrading/downgrading to.
  • (s2Member). New feature. Brute Force IP/Login Restrictions. As with any Membership system, it is possible for someone to try and guess Username/Password combinations by attempting a Brute Force Attack; whereby multiple/repeated logins are strategically attempted with various Username/Password combinations until a correct guess is made. It is NOT likely that you'll be attacked in this way, but it's still a good idea to protect your system; just in case somebody tries this. s2Member thwarts this behavior by monitoring failed login attempts that occur within a short period of time. Whenever s2Member detects an IP address ( i.e. a remote user ) that is consistently failing to enter a valid Username/Password, a temporary ban is created; preventing additional attempts from taking place for 30 minutes. This temporary ban, will ONLY affect the offending IP address. For further details and configuration of this new feature, please check your Dashboard under: s2Member -> General Options -> Brute Force IP/Login Restrictions.
  • (s2Member Pro). New feature. The s2Member (Pro) Login Widget now includes Login/Logout Redirection options. For further details, please check your Dashboard under: Appearance -> Widgets -> s2Member (Pro) Login Widget.
  • (s2Member/s2Member Pro). Compatibility. s2Member now precedes all of its calls to these two functions with an @ sign ( @ini_get and @ini_set ). This suppresses errors generated by PHP whenever these functions are disabled on the installation server. This is a very minor issue, as most hosting companies DO allow these functions to be called through PHP. At any rate, the preceding @ sign now puts s2Member inline with WordPress standards in this regard.
  • (s2Member). WP 3.1 Compatibility. When "Redirect Members away from the Default Profile Panel?" is set to ( Yes ), s2Member will take an initiative to further safeguard ALL /wp-admin/ areas of your installation; not just the Default Profile Panel. Also, starting with WordPress 3.1+, setting this to ( Yes ) tells s2Member to dynamically modify links/titles in the new Admin Bar that can be enabled on WordPress 3.1+. s2Member will force links to your Login Welcome Page instead of the Default Profile Panel; and Dashboard links are removed for non-Admin accounts ( as they should be ).
  • (s2Member). New feature. It is now possible to delete/reset IP Restrictions ( i.e. temporary bans ) caused by a security breach in your configuration of s2Member's IP Restrictions. Some site owners have reported complaints from their Customers about the error 503 / Too Many IP Addresses. This is not a bug; it is the result of a temporary ban that s2Member imposes automatically; based on your IP Restriction configuration in the General Options panel for s2Member. Improving upon this functionality in s2Member v3.5+, you can now pull up a Users account in your Dashboard and delete/reset temporary bans on a per-User basis; as needed for customer service. For further details, or to delete/reset ALL IP Restrictions at once, please check your Dashboard under: s2Member -> General Options -> IP Restrictions.
  • (s2Member). Multisite bug fix. When s2Member is installed on a Multisite Network, it is now capable of dealing with centralized Users accounts that are being shared across multiple sites in the Network. In other words, s2Member v3.5+ prevents WordPress from generating username/email exists errors through front-end forms whenever a User that exists on one site attempts to register on another. In order to accomplish this, s2Member v3.5 introduces one additional Multisite patch for your /wp-includes/ms-functions.php file, making it possible for WordPress to add/remove existing User accounts from one site to another (gracefully); just like that which is supported natively in the WordPress Dashboard already. NOTE: after updating to s2Member v3.5+, please be sure to re-run your Multisite (Config) patches. You will find these patches in your Dashboard under: s2Member -> Multisite (Config). And yes, this is also compatible with WordPress v3.1.
  • (s2Member). Multisite auto-patcher. When running on a Multisite Network with `Automatically Patch WordPress
3.3.2 2010-12-15
  • Tested against WordPress 3.0.3. Everything looks good.
  • (s2Member) Bug fix. s2Member was ignoring ?redirect_to=value upon login, in favor of the Login Welcome Page configured for s2Member. s2Member v3.3.2 has been updated to allow the use of redirect_to; and to simply default to the Login Welcome Page when no redirect_to argument is passed in. This is the intended behavior. As of s2Member v3.3.2 this now works fully as expected.
  • (s2Member/s2Member Pro) Bug fix. s2Member was incorrectly calculating delayed EOT Times under certain circumstances. This was related to non-recurring Subscriptions processed on PayPal accounts opened after October 15th, 2009. Under the right scenario, PayPal's IPN responses were fooling s2Member, by immediately expiring payments; and sending a recurring_payment_expired IPN before the recurring_payment IPN. So s2Member was incorrectly calculating the EOT Time ( i.e. last_payment_time was not properly considered ). The logic behind s2Member's IPN handling routines has been corrected in v3.3.2 to resolve this issue.
  • (s2Member/s2Member Pro) SEO / Search Engine Optimization. s2Member now sends 301 redirect headers instead of the default WordPress 302. This prevents duplicate content warnings from search engines such as Google. In other words, when s2Member redirects visitors ( and/or search engine spiders ) to your Membership Options Page, in response to an attempt to access a secured area of your site; the wp_redirect() call will send a 301 redirect header instead of a 302. This prevents duplicate content warnings associated with your Membership Options Page. In addition, a universal Filter ( i.e. ws_plugin__s2member_content_redirect_status ) has been added to s2Member's source code, giving developers the ability to modify this behavior dynamically; if they need to.
  • (s2Member Pro) Bug fix. s2Member Pro's AliPay integration was incorrectly handling Return URLs on success. This release fixes the invalid syntax inside /functions/separates/alipay-return.inc.php.
  • (s2Member Pro) Compatibility. s2Member Pro Forms are now compatible with jQuery v1.4.4. jQuery v1.4.4 introduced the need for double-quotations around all attribute/value selectors.
  • (s2Member Pro) New Pro Form attribute. s2Member Pro Forms now accept a new Attribute ( i.e. template="" ). This allows developers to integrate Pro Forms with custom template files, on a per-Form basis. For further details on this topic, please check your Dashboard under: s2Member -> PayPal Pro Forms -> Shortcode Attributes (explained).
  • (s2Member) Bug fix. A bug that was first introduced in v3.3 was causing AWeber integrations to fail with email addresses being picked up as the administrative address instead of the Customer's address. This was related to a previous change in v3.3 where all mail() commands were converted to wp_mail() for improved compatibility. With this release ( s2Member v3.3.2 ), the bug with AWeber integration has been resolved. Thanks to everyone for reporting this important issue.
3.3.1 2010-12-01
  • Tested against WordPress 3.0.2. Everything looks good.
  • Updated Stable Tag to v3.3.1. s2Member is compatible with WordPress 3.0+ ( including WP 3.0.2 ).
3.3 2010-12-01
  • (s2Member) Bug fix / File Downloads. Use of PHP's fread() function has been updated to stream_get_contents() with a 2MB chunk size in order to satisfy the needs of site owners delivering VERY large files ( 500MB+ ) though simulated HTTP streams "inline". For instance, an MP4 video file into a FlowPlayer/JWPlayer or another Flash-based application. In addition, s2Member is now capable of output buffering its chunked file delivery, making it possible for s2Member to deliver VERY large files through most shared hosting platforms without needing to upgrade to a private server.
  • (s2Member) Bug fix / BuddyPress. Bug fix. New filter added in support of BuddyPress on a Multisite installation. add_filter ("bp_signup_usermeta", "ws_plugin__s2member_ms_process_signup_meta");
  • (s2Member) Bug fix / BuddyPress. Improved detection of BuddyPress activation/registration slugs using BP_ACTIVATION_SLUG, BP_REGISTER_SLUG in conjunction with improved routing of $usermeta data inside /s2member/includes/functions/config-user-registration.inc.php. This resolves an issue where s2Member was not properly applying Membership Levels ( e.g. an s2 Role ) with BuddyPress installed on a Multisite Network.
  • (s2Member) Custom Registration Fields. s2Member's API Notifications now support custom Replacement Codes for any Custom Registration Fields that you've configured with s2Member. This makes it easier for developers to integrate 3rd party services, because s2Member's API Notifications can now be configured to send additional information that may include data entered by your Customer into a Custom Registration Field. Also, s2Member still supports the custom="domain|cv1|cv2|cv3|etc..." Attribute in your Shortcode too. For full details, check your Dashboard under: s2Member -> API Notifications.
  • (s2Member) Improved documentation on various Replacement Codes available for s2Member. There are also some new Replacement Codes made available in various sections/integrations.
  • (s2Member) In WordPress, when you list all Users, you will find a search box in the upper right-hand corner of the screen. This search box now has the ability to find Members by Username, Display Name, Nickname, s2Member / Paid Subscr. ID, Custom String, and ANY Custom Registration Field value.
  • (s2Member) Advanced Content Dripping. A new PHP/API Constant has been made available for Content Dripping S2MEMBER_CURRENT_USER_PAID_REGISTRATION_DAYS ( note the addition of "PAID" ). Also, s2Member v3.3 includes an entirely new/alternative method for Dripping Content, using a new API Function called s2member_registration_time ([level]). You will find all of the information/documentation on this topic inside your Dashboard under: s2Member -> API Scripting -> Content Dripping. s2Member now has the ability to provide you with information about when a Member pays you at each specific Membership Level. That being said, there IS an issue with this... The new function s2member_registration_time () will NOT return data correctly for existing Members that paid you prior to you upgrading to s2Member v3.3+. This is because s2Member did NOT record all of this information in previous versions. So it can't give you what it doesn't have on any of your existing Members. Please check the forums for workarounds.
  • (s2Member) API Constants. s2Member v3.3 includes some new API Constants related to PayPal and PayPal Pro integration. Such as the configured PayPal API Username, Password, Signature, etc. These will make it easier for other extensions to be built on top of s2Member should the need arise.
  • (s2Member/s2Member Pro) Documentation updated throughout. Some minor wording changes were required here-and-there in order to prevent confusion with all of s2Member Pro's new Gateway integrations.
  • (s2Member/s2Member Pro) All of s2Member's Button Generators now give you the ability to set a Trial Period and a separate Trial Billing Amount. So instead of just offering a 100% free Trial Period, you can now offer an Initial Period at one price, but have the Subscription billed later at a different Regular Recurring rate.
  • (s2Member Pro) New configuration panel added to s2Member Pro. The new Other Gateways panel allows you to enable/disable other Payment Gateways that have been integrated with s2Member Pro.
  • (s2Member Pro) Google Checkout. s2Member Pro has been integrated with Google for Direct Payments and also for Recurring Billing. In order to take advantage of this new integration method, you will need to have a copy of s2Member Pro, and a Google Checkout Account. A Google Checkout account is free.
  • (s2Member Pro) ClickBank. s2Member Pro has now been integrated with ClickBank for Direct Payments and also for Recurring Billing. In order to take advantage of this new integration method, you will need to have a copy of s2Member Pro, and a ClickBank Merchant Account. Otherwise, you can just use the PayPal Standard integration that comes with the free version of s2Member.
  • (s2Member Pro) AliPay. s2Member Pro has been integrated with AliPay for Direct Payments. In order to take advantage of this new integration method, you will need to have an AliPay Merchant Account with Direct Pay enabled ( aka: -- ). This can sometimes take a couple of days to acquire. Once you've been approved at AliPay, you'll be given a Partner ID, and a Security Code; which you'll need to configure inside your s2Member -> AliPay Options.
  • (s2Member Pro) PayPal Pro integration with s2Member Pro, now supports Coupon Codes that can be configured to ONLY apply to (ta) Trial Amounts, or (ra) Regular Amounts. For further details and examples, please check your Dashboard under: s2Member -> Coupon Codes.
  • (s2Member Pro) PayPal Pro Forms with s2Member Pro, can now be configured to recur at these new intervals: Bi-Weekly, Bi-Monthly, and Quarterly recurring cycles.
  • (s2Member Pro) Documentation. New documentation on ALL of s2Member's Shortcode Attributes for Pro Forms, Standard Shortcodes, and other Payment Gateways; is now included inside your Dashboard. For each Payment Gateway that you enable, there will be a Button Generator available in the s2Member Menu panel. At the bottom of each Button Generating station, you'll find a detailed examination of s2Member's Shortcode Attributes. This should make s2Member even easier for developers to integrate.
  • (s2Member Pro) AliPay chinese documentation added to the /s2member-pro/extras/ folder in case developers would like to review the technical aspects. This is NOT required though.
3.2.9 2010-10-27
  • Compatibility. s2Member's Custom Field interface was being negatively impacted by the Prototype library for JavaScript; which is utilized by some other popular plugins, such as WP-O-Matic. As a result, on some installations of s2Member ( depending on your plugin combination ), a few site owners were seeing a jumbled mix of fields in their General Options panel for s2Member. This conflict with the Prototype library has been resolved in s2Member v3.2.9+.

If ( and ONLY if ) you were experiencing this issue in previous versions of s2Member, it is recommended that you delete all of your existing Custom Fields for s2Member and re-create them. If you don't delete all of your corrupted Custom Fields and start over, the issue may appear to still exist; but it HAS been corrected.

3.2.8 2010-10-17
  • Unique IP Restrictions. There is a new option under: s2Member -> General Options -> IP Restrictions which allows a site owner to effectively disable IP Restrictions if they'd prefer. On some hosting platforms, the $_SERVER["REMOTE_ADDR"] variable ( i.e. a Users IP address ) is incorrectly set to the exact same thing for all visitors; which WILL prevent s2Member's IP Restrictions from working as intended. If you're on a hosting platform that has this bug, you may wish to disable IP Restrictions completely using s2Member v3.2.8+. Otherwise, under most circumstances we recommend that you leave IP Restrictions on.
3.2.7 2010-09-25
  • Custom Fields ( new features ). s2Member is now equipped with a VERY powerful set of features; designed to extend the functionality of Custom Fields. s2Member now supports Text Fields ( single/multi-line ), Checkboxes ( single/multi-option ), Radio Buttons ( single/multi-option ), and Dropdowns ( single/multi-option ). In addition, with s2Member it is now possible to configure Custom Fields differently for each Membership Level. Other tools: including Validation Formats and Visibility are also available. For full details, check your Dashboard under: s2Member -> General Options -> Custom Fields.
  • Attn Developers ( before upgrading ). Hooks/Filters ( e.g. those related to Custom Fields ) have been modified in ways that may break custom scripts you've created to work with previous versions of s2Member. We suggest dropping all of your Hooks/Filters related to Custom Fields. Instead, use the NEW improved tools w/s2Member v3.2.7+. Please see: s2Member -> General Options -> Custom Fields.
  • BuddyPress/Multisite. A plugin conflict was resolved between BuddyPress/s2Member when both of these plugins were installed on a Multisite Network together. BuddyPress bypasses the default Filter ( pre_site_option_registration ) and instead, it uses: bp_core_get_site_options(). This has been resolved in s2Member v3.2.6+.
  • Bug fix. A bug was found in s2Member's handling of Custom Fields columns. This minor bug was conflicting with other plugins that attempt to create User-based columns. This was been resolved in s2Member v3.2.7+.
  • New Shortcode attribute. s2Member's PayPal Button Shortcode now accepts a new attribute ( ta="0.00", Trial Amount ). In the past, if you intended to offer a "paid" initial period at a different price, you had to use the Full Button Code. Now you can just change the ta="0.00" attribute ( which is easier ).
  • More informative. s2Member now generates warnings for newbies that create conflicts between their Membership Options Page and Login Welcome Page. s2Member is now capable of detecting the most common conflicts, in order to produce informative messages that assist site owners.
  • Login/Registration Design. s2Member v3.2.7+ includes additional customization tools that allow font sizes and font families to be configured for the Login/Registration system. In your Dashboard, go to: s2Member -> General Options -> Login/Registration Design.
  • Bug fix. The Default Profile Editing Panel ( e.g. /wp-admin/profile.php ) was NOT validating Custom Fields. s2Member v3.2.7 resolves this for Users/Members. Administrators are exempt ( the intended functionality ).
  • Better instructions inside in the General Options panel for s2Member. Just a few subtle improvements based on User feedback. Hopefully these will make life a little easier for newbies.
3.2.5 2010-09-07
  • IP Restrictions ( reset ). Several site owners have reported issues with s2Member's IP Restrictions. A full investigation has been performed. Although no bugs were found, we suspect that recent reports on this topic are related to a combination of a.) improvements in recent versions of s2Member, with respect to IP Restrictions ( adaptive concurrency limits ); and b.) lack of support ( on the part of s2Member ) for resetting IP Restriction Logs after changes in configuration. In this release of s2Member, we've introduced a new tool for site owners, which allows you to Reset IP Restriction Logs manually, at anytime you like. For further details, please see: s2Member -> General Options -> IP Restrictions ( look for the new button titled: Reset IP Restriction Logs. ).
  • Compatibility. s2Member's activation/deactivation routines have been updated to support installations of WordPress that may, or may not, already have the default WordPress Roles installed. For instance, some installations of WordPress are running with Role managing plugins. A site owner could have modified WordPress, and may no longer have one, or even all of these default Roles: administrator, editor, author, contributor, subscriber. s2Member is now capable of dealing with this scenario gracefully upon activation/deactivation.
3.2.4 2010-08-31
  • BuddyPress ( bug ). A bug that was first introduced in s2Member v3.2.3 with Hook priority on template_redirect was causing compatiblity issues with BuddyPress. This has been corrected in s2Member v3.2.4+.
  • Bug fix. The s2Member Meta Box panel was not being displayed with Custom Post Types. This has been resolved in s2Member v3.2.4+.
3.2.3 2010-08-30
  • New Feature - "Alternative View Protection". Check your Dashboard: s2Member -> General Options -> Alternative View Protection. This new feature deals with some long awaited (protection) for things like: search results, RSS/XML feeds, and custom queries; where excerpts of protected content may slip through, depending on your theme. This feature is NEW, and still in an experimental state. It is disabled by default, but we encourage you to try it with different settings, and report back to us through the support forums for s2Member.
  • New Feature - "Query Conditionals" for developers. Check your Dashboard: s2Member -> API Scripting -> Query Conditionals. s2Member now provides several built-in API Functions that are tailored to meet the needs of developers integrating s2Member into their themes. Such as: is_category_protected_by_s2member($cat_id), is_category_permitted_by_s2member($cat_id), is_tag_protected_by_s2member($tag_id [slug or tag name]), is_tag_permitted_by_s2member($tag_id [slug or tag name]), is_post_protected_by_s2member($post_id), is_post_permitted_by_s2member($post_id), is_page_protected_by_s2member($page_id), is_page_permitted_by_s2member($page_id), is_uri_protected_by_s2member($uri [or full url]), is_uri_permitted_by_s2member($uri [ or full url]). In addition, there are two special functions that can be applied by theme authors before making custom queries: attach_s2member_query_filters(), detach_s2member_query_filters(). These can be used before and after a call to query_posts() for example. s2Member will automatically filter all protected content ( not available to the current User/Member ). Further details on these functions is available under the API Scripting section in your Dashboard. You can also have a look at this file: /s2member/includes/functions/api-functions.inc.php.
  • Compatiblity. s2Member is now compatible with the Page Tagger plugin for WordPress. Installing this plugin will allow you to protect Pages with Tags ( optional ). s2Member is also compatible with HeadSpace2 SEO, which can also enable Tags for Pages.
  • Bug fix. A bug was found in s2Member's handling of PayPal EOT responses. This bug was affecting site owners with newer PayPal accounts ( i.e. their Subscription IDs start with I- ). These newer PayPal accounts trigger subscr_eot events upon last payment, instead of when time has actually expired. s2Member v3.2.3 has been updated to correct its handling of subscr_eot events in this scenario. An obvious symptom of this bug, was to sell a non-recurring Subscription, and have that Subscription EOT on the very same day as the first payment ( which was also the last payment ), because it was non-recurring. This has been resolved in s2Member v3.2.3+.
  • New API Notification. s2Member v3.2.3 includes a new API Notification that can provide details about Refund/Reversal events, which are related to transactions for "Specific Post/Page Access". s2Member has always provided Refund/Reversal Notifications, but NOT for Specific Post/Page Access. There are now two API Notifications for Specific Post/Page Access. One for initial Sales, and another for Refunds/Reversals ( i.e. chargebacks ).
  • Replacement Codes. s2Member v3.2.3 adds two additional Replacement Codes to the API Notification for cancellations. These two additional Replacement Codes are: %%item_number%%, and %%item_name%%. See: s2Member -> API Notifications -> Cancellations for further details.
  • Optimization. Some of s2Member's larger routines have been moved into the /functions/separates/ directory, and they're now loaded "as needed", as opposed to being loaded by default. This will further optimize sites powered by s2Member. In addition, ( FYI for developers ) there are plans to implement SPL Autoload into a future release of s2Member, through classes assigned to various parts of the s2Member software package.
  • Improvement. s2Member's Meta Box panels in the Post/Page editing stations are now designed to disable themselves automatically on special Pages that are handled automatically by s2Member; ( i.e. the Membership Options Page, Login Welcome Page, Download Limit Exceeded Page ). s2Member also provides site owners with a clearer picture of how it handles these special Pages through the Meta Box panel.
  • General Maintenance. These two files paypal-notify.inc.php, and paypal-return.inc.php have BOTH been through another round of testing. Log file analysis ( with the help of other site owners ) indicated there were a few tweaks needed here and there. Minor changes were performed to improve compatibility for both PayPal Standard and PayPal Pro IPN handling ( across both old and new PayPal accounts ). Things like product_name vs. item_name vs. item_name1; and item_number vs. item_number1, vs. rp_invoice_id parsing.
  • New Shortcode Attribute. s2Member now accepts another PayPal Button Shortcode attribute ( ns="1" ) is s2Member's default setting. This controls the no_shipping variable in your PayPal Button. 0 to prompt for a shipping address, but NOT require one ( enables shipping details via IPN ). 1 to NEVER prompt for a shipping address. 2 to prompt for a shipping address, AND require one ( enables shipping details via IPN ).
  • Coming soon. Improvements to s2Member's support for Custom Fields did NOT make it into the official release of s2Member v3.2.3. Further beta testing is required. Support for selects, radios, checkboxes, and other improvements will come in s2Member v3.2.5.
  • Additional changes in "s2Member Pro" have been recorded here.
3.2.2 2010-08-23
  • Simple Conditionals ( completely re-written ). Simple Conditionals, first introduced in s2Member v3.2.1; have been completely re-written to support a wider range of features. The new Shortcode is s2If. The older Shortcodes have now been deprecated: s2All, s2Any ( do NOT use ). The older Shortcodes will continue to work with backward compatiblity, but they'll be removed in a future release of s2Member. Please update any existing Shortcodes referencing s2All,s2Any ( do NOT use ), by switching them all over to s2If instead. We apologize for the drastic changes to this new feature; but it was a necessary step forward. The initial release of Simple Conditionals was very buggy, and NOT as extensible as the new s2If logic is now. If you've been using Simple Conditionals, you will need to re-review all documentation and code samples. The new s2If Shortcode is fully documented, inside your WordPress Dashboard under: s2Member -> API Scripting -> Simple Conditionals.
  • Starting with s2Member v3.2.3, "Simple Conditionals" are now available to you from within WordPress, using Shortcodes that are fully compatible with both the Visual Editor, and also the HTML Tab in WordPress. We've been through all of the documentation for s2Member, and updated (again) ALL code samples to provide you with Shortcode equivalents. You can learn more about this new feature in your WP Dashboard, under: s2Member -> API Scripting -> Simple Conditionals. Simple Conditionals are a NEW feature, and they'll have no affect on Advanced Conditionals; which have always been available for s2Member.
  • Bug Dodging. A call to get_defined_constants(true) inside css-js-w-globals.inc.php was causing a segfault on some installations of PHP 5.2. Bug reports at PHP.net indicate this is caused by the (true) argument being passed; and under the right conditions ( e.g. with the right combination of PHP extensions installed ) this can result in a segfault. In this release of s2Member ( v3.2.2 ), we've dodged this PHP bug completely, by implementing a different method for tracking the integrity of API Constants, thereby circumventing this odd behavior on some Apache/PHP installations. s2Member no longer makes any calls to the get_defined_constants() function.
  • New Feature. s2Member can now send automatic API Notification Emails, which include a full Transaction Log for each API Notification event. In other words, you can now tell s2Member to send emails to different addresses, for each of s2Member's API Notification events. For further details, see: s2Member -> API Notifications. Look for "Email Transaction Log" under each sub-section. This new feature will make it easier to integrate s2Member with back-office routines, and in particular, easier to integrate with 3rd-party list servers - other than MailChimp/AWeber, which s2Member already supports natively. This new feature also makes it easier to build confidence in s2Member. As a Site Owner, you may configure email notifications for each event, and monitor s2Member's behavior.
  • New API Notification. s2Member can now process separate API Notifications for "Cancellation" events. For further details, see: s2Member -> API Notifications -> Cancellations. Using this feature in conjunction with the new Email Transaction Logs, you can be notified via email; each time a Cancellation occurs.
  • Bug fix. On a Multisite Blog Farm, s2Member was missing an important Hook/Filter ( signup_hidden_fields ) during a registration that included both an account, and also a Blog. This bug has been resolved with s2Member v3.2.2+.
3.2.1 2010-08-21
  • Simple Conditionals. Staring with s2Member v3.2.1, "Simple Conditionals" are now available to you from within WordPress, using Shortcodes that are fully compatible with both the Visual Editor, and also the HTML Tab in WordPress. We've been through all of the documentation for s2Member, and updated ALL code samples to provide you with Shortcode equivalents. You can learn more about these new Shortcodes in your WP Dashboard, under: s2Member -> API Scripting -> Simple Conditionals. There are three new Shortcodes all together: s2All, s2Any, and s2Get - which allows you to pull all sorts of information from your WordPress installation, without a single line of PHP code. All compatible with the Visual Editor. We also suggest a re-review of s2Member's API Constants, under: s2Member -> API Scripting -> Constants. This will NOT affect any existing Conditionals that you've written. Simple Conditionals are a NEW feature, and they'll have no affect on Advanced Conditionals; which have always been available for s2Member.
  • Feature. s2Member now comes equipped with an advanced behavioral setting; specifically geared toward two special events ( Refunds/Reversals ). With s2Member v3.2.1+, you will find a new option which gives you more control over the way s2Member handles these two events. In your WP Dashboard, see: s2Member -> PayPal Options -> EOT Behavior.
  • Bug fix. s2Member's bbPress Bridge integration was using a hard-coded reference to wp_capabilities, instead of using an option call to determine the WordPress table prefix that was needed for some installations. This was affecting installations of WordPress that were using a non-standard wp_ prefix. Corrected in s2Member v3.2.1. In addition, another bug was found, causing the error: missing argument in preg_replace. This has also been corrected with s2Member v3.2.1+.
  • Bug fix. Invalid method WP_User->hap_cap(). This should have been WP_User->has_cap(). This was negatively affecting the new Custom Capabilities per-Post/Page introduced in the previous release of s2Member v3.2. This bug has been resolved with s2Member v3.2.1+.
  • Hooks/Filters. Several new Hooks/Filters for Custom Fields. The upcoming release of s2Member v3.3 will include many new features for Custom Fields. In the mean time, these new Hooks/Filters integrated into /includes/functions/register-access.inc.php will make it easier for developers to maniuplate the display of Custom Fields. One such example is the Filter ws_plugin__s2member_during_custom_registration_fields_during_custom_fields_display.
  • Forcing SSL w/ PayPal Pro integration. The Custom Field s2member_force_ssl=yes is now more powerful. s2Member is now capable of forcing SSL ( i.e. https:// ) on certain Posts/Pages, WITHOUT causing a site-wide conversion to https. In other words, s2Member can now buffer content without affecting href tags within that content, and/or in your navigation menus. Improvements to this routine make integrations of PayPal Pro Forms easier than ever. Just add this Custom Field to any Post/Page that you want to force SSL on: s2member_force_ssl=yes. This is compatible with almost ANY WordPress theme. Or, if your host requires a specific port number in the URL, use this instead: s2member_force_ssl=443. This Custom Field can be added in your Post/Page editing stations; inside WordPress. ( * This is also compatible with the Quick Cache plugin for WordPress, so that PayPal Pro Forms can be cached initially for speed optimization. )
  • IP Restrictions ( i.e. s2Member -> General Options -> IP Restrictions ), have been enhanced to provide better security against slower attacks that may span several weeks/months. s2Member's IP Restrictions are now capable of internal concurrency timeouts on a per-IP basis, as opposed to just a per entry-point basis. In addition, s2Member is now smarter about the way it enforces your configured Punishment Period. Some additional documentation on how IP Restrictions work, is now available in your s2Member General Options panel. There's nothing you need to change though; just review the updated details on this topic in your General Options panel for s2Member.
  • Bug fix. The new Meta Box panel that was made available in the previous release of s2Member ( e.g. in your Post/Page editing stations ), was saving an empty array when there were no Custom Capabilities being specified/required. This is/was harmless; however, it WAS causing s2member_ccaps_req to appear in the Custom Fields drop-down menu for each Post/Page; even with no Custom Capabilities were required. This confusing behavior has been resolved with s2Member v3.2.1+.
  • Bug fix. A new feature added in the previous release of s2Member, making it possible to Add A User through WordPress ( including all s2Member fields initially, without a subsequent Edit ), was working with Multisite enabled, but broken WITHOUT Multisite enabled. This has been resolved with s2Member v3.2.1+. This feature is now working with or without Multisite Networking enabled.
3.2 2010-08-17
  • New Feature. s2Member now provides a small panel ( aka: meta box ) inside your Post/Page editing stations. This new panel makes it possible for you to restrict access to a Post/Page, or even a Custom Post Type ( on-the-fly ) without having to go back to your General Options panel all the time. Starting with s2Member v3.2+, you can also tell s2Member to require Custom Capabilities on a per Post/Page basis. So now, s2Member ( if you prefer ) can handle Custom Capabilities for you! Whenever you edit a Post/Page, you can tell s2Member to require certain Custom Capabilities that you type in, using comma delimited format. In other words, you will need to type in some of the trigger words that you used whenever you created your PayPal Pro Forms and/or Standard PayPal Buttons. This way your Members will have the proper Capabilities to view different kinds of content that you offer. All of this is optional.
  • Compatibility. s2Member, and also the s2Member Pro Module; have both been tested under WordPress 3.0.1. Everything looks good - no conflicts.
  • Multisite Networking. s2Member, and also the s2Member Pro Module; are now compatible with WordPress 3.0+ Multisite Networking, formerly known as WPMU. In addition, preliminary ( experimental ) support for Multisite Blog Farms has also been implemented. If you\'re running a Multisite Blog Farm ( i.e. you offer Blogs ), please contact s2Member.com for further details.
  • A new panel is made available under s2Member -> Multisite ( Config ), whenever Multisite Networking is enabled. This is where a Super Administrator ( operating on the Main Site ) can decide to offer Membership only, or Membership with Blog creation as well. In other words, your site could ALSO offer a Customer access to create a Blog of their own, where a Customer becomes a "Member" of your ( Main Site ), and also a Blog Owner/Administrator. With s2Member installed ( network wide ), each of your Customers could offer Membership too, using a single installation of the s2Member plugin ( which is a great selling point! ). We refer to this as a Multisite Blog Farm.
  • Bug fix. The s2Member Framework has been updated to fully support installations of WordPress that have two different URLs configured in their WP Settings -> General section. This bug was related to bloginfo("url") vs. bloginfo("wpurl"). In previous versions of s2Member, a major symptom of this bug was an unexpected redirection to the Home Page after checkout, instead of a formal response to the Customer. This bug was only affecting installations of WordPress that were using a different Site Address URL, inside their Settings -> General panel. This has been resolved in s2Member v3.2+.
  • Bug fix. An issue related to protected File Downloads, where a site owner was using sub-directories to guard specific files from specific Levels, was sometimes resulting in an invalid redirection to the Membership Options Page, with a query string indicating 21, ( i.e. s2member_level_req=21 ). This bug has been corrected in s2Member v3.2+.
  • Videos. Over six hours of detailed Video Tutorials are now available for s2Member. Additional videos will be released over the coming days and weeks ahead; covering more advanced topics, marketing tips, and an in-depth look at the s2Member Pro Module, plus Multisite Networking; which is also evolving rapidly.
  • API Behavior. s2Member's API Notification for EOT/Deletions, has been changed slightly. In previous versions, the EOT/Deletion notification was only processed for a ( paid ) Member, who reached the end of their term, OR ... if a ( paid ) Member was manually deleted by an Administrator through the Dashboard. Starting with s2Member v3.2+, an EOT/Deletion Notification will be processed, EVEN if the account is NOT currently associated with a ( paid ) Member. In other words, starting with s2Member v3.2, if you delete an account manually ( through your WP Dashboard ) this will ALWAYS trigger s2Member's EOT/Deletion Notification; no matter what. For further details, check your Dashboard: s2Member -> API Notifications -> EOT/Deletion.
  • Bug fix. Login message filter ( login_messages ) applied to registrations with a custom password entered during the registration process. Registration complete. Please log in. This Hook/Filter was renamed to just ( login_message ) with the release of WordPress 3.0.1. Very minor issue, but this has been corrected with s2Member v3.2+ - in support of WordPress 3.0.1+.
  • Feature. Custom Registration Fields for s2Member, now support an Un-editable Mode ( in other words, if you want specific fields to be un-editable after registration ), you can wrap those Custom Fields inside ^carets^. In your WP Dashboard, see: s2Member -> General Options -> Custom Fields for additional documentation and examples.
  • Profile Editing Panel. The Stand-Alone Profile Modification Page ( provided by s2Member ); now includes a password confirmation field ( in other words, a NEW password must be typed in twice as a confirmation ).
  • BuddyPress/MailChimp. The first/last name fields were NOT being populated into the MailChimp integration with BuddyPress installed. This has been resolved with s2Member v3.2+.
  • Logging routines. s2Member's logging routines have been updated to support Multisite Networking. When Multisite Networking is enabled, s2Member will keep separate log files for each domain/path.
  • Validation. The JavaScript validation routine for the wp-login.php file, now includes the Username/Email Address to help Customers avoid confusion.
  • Feature. Integration of Custom Fields into the Users -> Add New panel. An account can now be created manually, with all details included initially. As opposed to the old way, where you had to go back and Edit the account manually, after the initial creation.
  • Feature. s2Member now exposes its s2member_custom field inside the admin panel. You can go to your Dashboard -> Users panel, and click Edit next to a Member. The Custom String is now editable. You're NOT likely to need this, but s2Member makes it editable anyway. Possibly for advanced usage by a developer.
  • Feature. Integration of Custom Fields into /wp-signup.php has been completed. This is only for Multisite Networking; where s2Member is being used in a Blog Farm environment.
  • PayPal. In the admin panel, a few subtle references to "PayPal" have been changed to just "Paid"; leaving room for additional gateway integration possibilities that are coming soon.
  • Feature. In the admin panel, there is now a shortcut link inside the s2Member menu panel; which leads a Site Administrator to Add A Member using manual entry.
  • Compatibility. On a Multisite Network; s2Member is NOT compatible with configurations that use a different Dashboard Blog; other than the Main Site. This is NOT a good idea to try this with s2Member; it opens the door for all sorts of issues. s2Member now forces your Dashboard Blog to the Main Site for sanity/compatibility/security.
  • Compatibility. Added support for this Conditional Tag current_user_can_for_blog( $blog_id, $capability ) in support of Multisite Networking integration. As well as $user->for_blog( $blog_id ).
  • Compatibility. Updated function calls with usermeta to user_option; including get_user_option(), update_user_option(), delete_user_option(). The usermeta functions were deprecated as of WP 3.0. The new get_user_option() function is also Multisite compatible. If you're a developer, you can take a look at s2Member's source code for examples. Or read this article.
  • Important Database Change. In previous versions of s2Member, data about each Member was stored inside the wp_usermeta table automatically; and it STILL is. However, the meta_key names are now prefixed with $wpdb->prefix, which on most installations of WordPress this translates to wp_ ( e.g. wp_s2member_subscr_id, wp_s2member_custom, etc, etc. ). s2Member will automatically update your database tables upon re-activation. However, if you're a developer, and you've been using get_usermeta($user_id, "s2member_subscr_id"), you should now use get_user_option("s2member_subscr_id", $user_id) instead. No need to specify the wp_ prefix in that function, it's handled internally by WordPress through the get_user_option() call. For more information, please read this article.
  • Bug fix. s2Member's PayPal IPN processor was logging Skipping Auto-EOT for now ..., with Refund/reversal IPNs; when a particular Member already had an EOT-Time set. This was NOT the intended behavior in this scenario. In this release, s2Member has been updated to ignore existing Auto-EOT Times under this one special circumstance ( Refund/Reversal ). A Refund/Reversal will ALWAYS trigger an immediate EOT now.
  • IPN Proxy Keys. s2Member's implementation of the optional Proxy Key for simulated IPN responses, has been updated to support Multisite Networking; through a new PayPal utility function ws_plugin__s2member_paypal_proxy_key_gen (). For further details, check your Dashboard under s2Member -> PayPal Options -> IPN Integration -> Proxy Key.
  • UI Improvement. The tabindex property for [?] icons in the admin panel have been set to tabindex="-1" to prevent an annoyance.
  • Compatibility. On a Windows server, the cURL extension is usually NOT compatible with SSL communications. s2Member now signals to the WP_Http class, that it should temporarily disable the cURL transport when a remote URL is being processed with an https:// prefix. This allows the WP_Http class to recover gracefully (automatically) and fall back on the FOPEN method. If you're running WordPress on a Windows server, you should make sure that you have this inside your php.ini file. ( `allow_url_fopen
3.1.5 2010-07-23
  • Bug fix. The Replacment Code ( %%current_user_level%% ); which works in conjunction with a Login Welcome Page URL, and also with URI Level Access was always returning -1. This has been corrected in v3.1.5+.
  • General cleanup and improved routines inside /includes/file-download-access.inc.php. No functionality changes, just subtle improvements in the logic behind s2Member's File Download Restrictions.
  • New Replacement Code for s2Member's Registration API Notification. The Replacement Code ( %%user_id%% ) is now available to developers.
3.1.4 2010-07-22
  • Bug fix. Conditional check against DOING_AJAX added as an exclusion to the admin lockout routines for s2Member. This allows /wp-admin/admin-ajax.php to receive Ajax requests at all times, as it should be.
3.1.3 2010-07-21
  • Bug fix. Comparison between $_SERVER["HTTP_HOST"] and a PayPal Custom/Proxy was failing on some servers that force a host port number into the $_SERVER["HTTP_HOST"] environment variable. MediaTemple does this. If you're hosted by MediaTemple, and you're using the s2Member Pro Module, you should upgrade to v3.1.3+.
  • Bug fix. The WP_Http class, which is responsible for handling cURL, ExtHTTP, and/or fopen functionality for connections to PayPal, was defaulting to a 5 second stream timeout. Under certain conditions, this was too low ( i.e. slow responses from PayPal, and/or a WordPress MySQL database ). The default timeout has now been increased to 20 seconds; which is designed to give high priority status to IPN processing routines; thereby reducing the chances of a connection timeout considerably, and improving the overall reliability of the s2Member checkout experience.
  • Localhost support. s2Member now supports "localhost" installations of WordPress; tested against WAMP and MAMP. Thanks to ScriptyGoddess for reporting this, and for her assistance with testing against her MAMP installation.
  • General UI cleanup. In particular, the PayPal Option panels have been cleaned up a bit; making these important panels "less intimidating" to site owners that are brand new to s2Member.
  • Support for File Download Restrictions, based on specific Member Level Sub-directories. For full details, please check your WP Dashboard, under: s2Member -> API Scripting -> "Custom Capability and Member Level Files".
  • The file /includes/s2member.js is now a development source file. The live version is now optimized, inside: /includes/s2member-min.js. This helps to further reduce the s2Member footprint.
  • Virtual terminal support (txn_type=virtual_terminal) has been added to the s2Member IPN processor. This provides developers with access to Hooks/Filters on Virtual Terminal transactions.
  • Internal optimization of s2member.css. These optimizations are designed to further reduce the footprint of s2Member.
  • Bug fix. A bug was discovered in the PayPal IPN routines; specifically with payment_status. Under the right conditions, it was possible for a declined echeck payment to slip through with a Failed payment status. s2Member v3.1.3+ corrects this bug.
3.1.2 2010-06-27
  • Updated minimum requirements to WordPress 3.0.
3.1.1 2010-06-27
  • New feature. Now you can use s2member_force_ssl -> yes as a Custom Field with any Post/Page. This feature comes in handy if you need to force SSL on pages hosting PayPal Pro Forms, implemented by the s2Member Pro Module. You can set s2member_force_ssl -> yes to force https://. If your server runs SSL over a special port number, or your server requires the port number to actually be in the URL ( i.e. HOST:port ), you can set s2member_force_ssl -> 443; or to whatever port you need. In addition to forcing https://, s2Member is also capable of forcing SSL compatibility in your theme, and in other quirky plugins. If your theme is NOT 100% compatible with SSL, s2Member can sometimes correct flaws automatically, but not always. For maximum compatibility with SSL, we recommend a premium WordPress theme from PriMoThemes.com, or from another trusted source that states "SSL Compatible".
  • Bug fix. References to the Constant WP_CONTENT_URL have been removed, in favor of content_url(), which is SSL-friendly.
  • Tweak. References to $_SERVER["HTTPS"] have been abandoned, in favor of is_ssl(), which is native to WordPress.
  • Windows. Although full testing on Windows IIS is not completed, one bug report indicated a problem with ["dir_url"]. This has been corrected in v3.1.1, using DIRECTORY_SEPARATOR.
  • Bug fix. PHP 5.3.x reference value on option filters. The apply_filters() call was changed to apply_filters_ref_array(). This has been corrected in v3.1.1.
3.1 2010-06-25
  • Upgrade recommended. Fixes a redirection loop on some configurations. Also adds several new features; listed below.
3.0.9 2010-06-21
  • Bug fix. Inside /includes/s2member.js, there was an incorrect reference to S2MEMBER_CURRENT_USER_IS_LOGGED_IN_AS_MEMBER. This has been changed to S2MEMBER_CURRENT_USER_IS_LOGGED_IN, making s2Member's File Download prompts compatible with Free Subscriber permissions at Level #0.
  • Bug fix. In the new Download Keys feature, first introduced in v3.0.5, a bug was discovered. The function s2member_encrypt() was being used inside s2member_file_download_key(), instead of s2member_xencrypt(). Download Keys need s2member_file_download_key(), with xencryption, for proper hash comparison. This has been resolved in v3.0.9. Thanks to Drew Kissinger for reporting this. For further details/instructions, check your WP Dashboard, under: s2Member -> Download Options -> Advanced.
  • Bug fix. Calls spread throughout s2Member's Framework to the function ws_plugin__s2member_nocache_constants(), have been updated to ws_plugin__s2member_nocache_constants(true); forcing compatiblity with Quick Cache and WP Super Cache inside protected "members only" areas. The true argument was added to force this behavior in certain circumstances, rather than asking s2Member to continously detect it. This also optimizes s2Member's security routines.
3.0.8 2010-06-21
  • Framework updated to support a special %%modification%% Replacement Code in proxy IPN Return URLs; used by the s2Member Pro Module.
3.0.6 2010-06-19
  • Upgrade highly recommended.
3.0.5 2010-06-18
  • Upgrade highly recommended. Several bug fixes, improvements, and some new features.


3.0.4 2010-06-01
  • Over 100 new Hooks/Filters have been added to the s2Member framework. Many of these Hooks/Filters now pass variables by reference.
  • All of s2Member's function calls have been wrapped inside if(!function_exists()){}. This gives developers the ability to override built-in functions - as needed. We suggest using Hooks/Filters, but when all else fails, you can now override built-in functions.
  • IMPORTANT: ( Attention Developers ) All of s2Member's internal Hooks/Filters have been prefixed with ws_plugin__ starting with v3.0.4. Given the number of Hooks/Filters spread throughout the s2Member framework ( now over 200 ); it was important to establish a standard for prefixing all Hooks/Filters. This will prevent future namespace clashes. If you've hooked into s2Member using your own custom programming routines, please update all of your Hooks/Filters by prefixing them with ws_plugin__.
  • Security fix. It was possible for a Customer to use a Registration Access Link generated by s2Member; coming from a previously canceled purchased, to re-register under certain circumstances. This has been resolved in v3.0.4.
3.0.2 2010-05-25

Upgrade recommended. Two bugs fixed, and new Hook/Filter arguments. See Changelog for details.

3.0.1 2010-05-23

No major changes. Just a few compatiblity improvements.

3.0 2010-05-18

Upgrade highly recommended. After upgrading, go to: s2Member -> PayPal Options -> EOT Behavior to enable the Auto-EOT System ( new ). For full details, please read the Changelog.


2.9.4 2010-05-13
  • Bug fix in %%current_user_login%% for Special Redirection URLs. Was not processing correctly. This has been resolved in 2.9.4+.
  • Bug fix in AWeber/MailChimp integration for Free Subscriber registrations. Specifically, those originating from the front-end.
  • Extra security hardening. MCRYPT_RIJNDAEL_256 / CBC now being utilized in Registration Access Cookies.
  • New feature. s2Member now supports a custom Double Opt-In Checkbox for its List Server integrations. See s2Member -> API List Servers -> Double Opt-In. This is also compatible with BuddyPress registration forms.
2.9.3 2010-05-08
  • Documentation fix. s2Member -> API Scripting -> Advanced Conditionals -> Example #5 contained a PHP syntax error. This has been corrected in v2.9.3.
  • Bug fix. Infinite redirection loop on Download Limit Exceeded Page. This was possible under certain circumstances, based on configuration. Resolved in v2.9.3.
  • s2Member fully tested under WordPress 3.0-beta2. Everything looks good. If you find any bugs, please report them here.
  • New feature. A couple of Replacement Codes are now supported in the s2Member URI Level Access Restrictions. See: s2Member -> General Options -> URI Level Access for further details. This can be useful if you're running BuddyPress. For example, if you're using BuddyPress, and want to protect BuddyPress Groups, you could add URI protection, like this: /members/%%current_user_login%%/groups/
  • New feature. For protected File Downloads, you may now specify a list of file extensions that should be displayed Inline ( in your browser ) as opposed to being downloaded as an attachment. See: s2Member -> Download Options -> Inline Extensions. A new API Constant was also added, which reflects the value of this option: S2MEMBER_FILE_DOWNLOAD_INLINE_EXTENSIONS.
  • Documentation change. This is only relevant if you've been using the s2member_xencrypt() function to provide free access to specific files. The documentation for this has been changed. You should now use s2member_free_file_download_key=<?php echo md5(s2member_xencrypt("file")); ?>, instead of just s2member_xencrypt() by itself ( which is now deprecated ). The addition of the MD5 hash improves the security of s2Member on a whole, and also makes your links shorter. Please update your links. In future versions of s2Member, the older method will no longer be supported.
  • Compatiblity fix. Calls to the PHP mail() function have been modified to exclude additional flag parameters. This makes s2Member more compatible with a variety of MTAs across different hosting providers.
  • New feature. A couple of Replacement Codes are now supported in the s2Member Login Redirection URL. See: s2Member -> General Options -> Login Welcome Page -> Special Redirection for further details. This can be useful if you'd like to redirect Members to their BuddyPress Profile, if/when BuddyPress is installed together with s2Member. For example, if you're using BuddyPress, and you want to redirect Members to their BuddyPress Profile page after logging in, you would setup a Special Redirection URL, like this: http://www.example.com/members/%%current_user_login%%/profile/
  • Please note. BuddyPress is NOT required to use s2Member. However, the combination of BuddyPress + s2Member is a popular choice among site owners.
2.9.2 2010-05-06
  • Bug fix. A bug in the PayPal Auto-Return routine for PDT ( Payment Data Transfer ) has been resolved. This bug was generating a message that read: Unable to verify POST vars. This was actually not a bug, but rather, a limitation in PDT transmissions from PayPal. s2Member has been updated, with a work-around for this limitation. This bug was very elusive, because it was not affecting all PayPal accounts. In some cases, it was only affecting PayPal accounts opened after October 2009.
2.9 2010-05-05
  • This release is all about security and bug fixes, with very few feature additions.
  • Bug fix, %%registration_url%% in the Signup Confirmation Email was being replaced with 1, instead of the full URL. This bug was first introduced in s2Member v2.8.7. This has been corrected in v2.9.
  • s2Member now uses MCRYPT_RIJNDAEL_256 / CBC through mcrypt_encrypt() when it's available on your server. XOR encryption is used as a fallback for hosts that do not have the mcrypt extension installed. The MCRYPT_RIJNDAEL_256 algorithm provides much better security.
  • A full security review of s2Member has been completed, in anticipation of the s2Member Pro Module; being released later this month ( May 2010 ). A new panel under: s2Member -> General Options -> Security Encryption Key should be configured. Just click the auto-generate button there. s2Member will assign a special Security Key to your installation.
  • Please join us in discussion. A new Support Forum has been created for s2Member ( May 2010 ). Feel free to submit code samples, error messages, feature requests, etc.
  • Please report all bugs. If you have any trouble with this release, you can always revert back to a previous version until the issue is corrected.
2.8.9 2010-05-01
  • Bug fixed in the Single-Page Access routines. Some Single-Page Access links were reporting "Link Expired". This has been resolved in s2Member v2.8.9.
2.8.8 2010-05-01
  • Integration instructions for iDevAffiliate and ShareASale are now available under: s2Member -> API Tracking.
  • Fixed a bug in the new Email Confirmation template for Single-Page Access. The replacement code: %%access_url%% has been changed to %%sp_access_url%%. This was a typo. The variable remains the same as it was, but the typo in the default template was corrected.
  • Added a new replacement code to the Single-Page Email Confirmation template. See: s2Member -> PayPal Options -> Single-Page. The new replacement code is: %%sp_access_exp%%, indicating a human readable duration for link validity.
  • High priority bug fixed with s2Member Hook/Filter on Login Design. This bug was just introduced in v2.8.7. This bug was preventing a customized Login Design from being displayed properly. Corrected in v2.8.8.
  • Bug fix in PayPal Button Generator. The modify="" parameter was being set to a value of "1" in some rare cases, depending on button configuration. It should always default to a value of "0", and only be set to a value of "1" or "2" whenever a Subscription Modification Button is being generated. This bug was introduced in v2.8.6. Corrected in v2.8.8.
2.8.6 2010-04-29
  • Powerful new feature! - s2Member now supports unlimited Custom Capabilities. This allows you to create an unlimited number of Membership Packages, all with different Capabilities ( customized specifically for what your site offers ). Custom Capabilities can also be configured on a per-User basis through your WordPress Dashboard, under Users. For further details, see: s2Member -> API Scripting -> Custom Capability Packages.
  • Powerful new feature! - Now you can sell Single-Page Access too, using "Buy Now" buttons. Single-Page Access works independently from Member Level Access. That is, you can sell an unlimited number of Pages using "Buy Now" Buttons, and your Customers will NOT be required to have a Membership Account with your site in order to receive access. If they are already a Member, that's fine, but they won't need to be. Further details are provided under s2Member -> PayPal Buttons.
  • MailChimp integration. s2Member can now be integrated with MailChimp. MailChimp is an email marketing service. MailChimp makes it easy to send email newsletters to your Customers, manage your MailChimp subscriber lists, and track campaign performance. Although s2Member can be integrated with almost ANY list server, we highly recommend MailChimp; because of their powerful API for MailChimp services. In future versions of s2Member, we plan to build additional features into s2Member that work with, and extend, MailChimp services.
  • AWeber integration. As a secondary option, s2Member can also be integrated with AWeber. AWeber is an email marketing service. Whether you're looking to get your first email campaign off the ground, or you're a seasoned veteran who wants to dig into advanced tools like detailed email web analytics, activity based segmentation, geo-targeting and broadcast split-testing, AWeber's got just what you need to make email marketing work for you.
  • Bug fix. Some of the %%replacement_codes%% for email messages were returning URL-encoded values. Replacement codes DO return URL-encoded values for API Notifications, because those are designed for use within URLs. However, they should NOT be encoded for email messages. This has been corrected in s2Member v2.8.6.
  • Bug fix. S2MEMBER_LOGIN_WELCOME_PAGE_URL was missing in the s2Member JavaScript API. This has been corrected in s2Member v2.8.6.
  • Important change. The API Constant: S2MEMBER_CURRENT_USER_FIELDS is now a JSON-encoded array, rather than a serialized array. Check s2Member -> API Scripting for code samples. This makes S2MEMBER_CURRENT_USER_FIELDS compatible with the PHP API, and also with the s2Member JavaScript API. In PHP, use json_decode() instead of unserialize().
  • Important change. The API Constant: S2MEMBER_CURRENT_USER_IS_LOGGED_IN works a little bit differently than it has in previous versions. Starting with s2Member v2.8.6, you should change any existing references to: S2MEMBER_CURRENT_USER_IS_LOGGED_IN, into this new API Constant: S2MEMBER_CURRENT_USER_IS_LOGGED_IN_AS_MEMBER. These two API Constants are documented under s2Member -> API Scripting. We're not getting rid of S2MEMBER_CURRENT_USER_IS_LOGGED_IN ( it's still useful ), but it does work a bit differently than it has in previous versions. Check the documentation if you're unsure, and we're sorry for the change-up.
  • Under s2Member -> General Options, there is a new configuration option for Profile Modifications.
  • Under s2Member -> PayPal Options, there is a new configuration option for EOT behavior.
  • The s2Member -> API Tracking field for Signup Confirmation, now supports PHP code too!
  • The PayPal Button Generator for s2Member, now supports Subscription Modification Buttons.
  • The PayPal Button Generator for s2Member, now supports Subscription Cancellation Buttons.
  • A new s2Member API Notification event has been added for Single-Page Access.
  • The PayPal Button Generator for s2Member, now supports "Buy Now" Buttons.
  • A new s2Member API Notification event has been added for Registrations.
  • We've added a new Quick Start Guide for site owners.
  • Documentation and code samples updated throughout.
  • Support for WordPress MU has been dropped, for now. Once WP 3.0 is released, we will come back to this. If anyone can help contribute to this effort, I would be very appreciative.
2.8.5 2010-04-19
  • Bug fix. A bug was causing the First & Last Name of a new User to be excluded whenever a new User was created manually through the WordPress Dashboard by an Administrator. This bug was first introduced in v2.8.2 and has now been resolved in v2.8.5.
  • Internal references to ?s2AC and ?s2ABC have been removed. These have been deprecated since v1.6 anyway. They have now been removed completely in favor of qcAC and qcABC. These two variables are ONLY used internally, in order to provide compatibility with the Quick Cache plugin for WordPress. This will have no impact on existing installations of s2Member; UNLESS you're using the Quick Cache plugin. If you ARE using the Quick Cache plugin, you should make sure that you're using Quick Cache 2.1.4+ for the highest level of compatibility with s2Member.
2.8.4 2010-04-17
  • A new option was added under s2Member -> General Options -> De-Activation Safeguards. This new option allows you to disable the de-activation routines for the s2Member plugin, so that s2Member Roles, Capabilities, and your Configuration Options will be preserved in case s2Member is de-activated inadvertently. We recommend that you Safeguard all s2Member data on your system; so please have a look at this new option.
  • A bug was found in the Shortcode processor, related specifically to Buy Now buttons for Lifetime access. This bug has been corrected in s2Member v2.8.4.
  • Stable tag updated in support of tagged releases within the repository at WordPress.org.