-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Getting Started with s2Member #261
Comments
@raamdev, @jaswsinc: This is going to be a really long KBA. I was wondering if I should break it up into parts (each of the headings as a separate KBA) with this coming last as a kind of table-of-contents? Thanks in advance. |
@patdumond I'd say keep it all in one KBA; the Table of Contents generated by each of the headings that shows up on the final published KBA will help with navigating the whole thing (we could even add "Return to top" links at the bottom of each section to make it easy to jump between the TOC and each section). I personally really like being able to navigate long tutorials from a single page, as it makes it easier than jumping around between links and allows me to search the single page for keywords I may be looking for in the tutorial. |
Works for me. Thanks @raamdev. On Sat, Sep 12, 2015 at 3:28 PM, Raam Dev notifications@github.com wrote:
|
👍 I agree. Longer articles can be good from an SEO perspective also. |
@raamdev , @jaswsinc: First draft. I think I win the badge for longest KBA ever... Please review. I'm sure there will be revisions needed. I've proofread it myself and run it through Grammarly, but it is VERY long. |
@patdumond Wow!! You definitely win the badge for longest KBA ever! Awesome work. 💯 I'm thinking once this is polished out, we could even generate a PDF version of it to offer as a download at the top of the article in case readers want to read it offline. :-) I did a high-level overview of the KBA and came up with some initial feedback:
|
@raamdev wrote:
Yes. That's how this whole thing got started. A user wanted to know if we could produce a PDF version. i asked about that and @jaswsinc suggested we start with a KBA. So I started. The intention was definitely to end up with a PDF though. I'm also glad that you want it rearranged. As you noticed, the main headings are in sync with the Getting Started panel of s2Member, but as I wrote it I noticed it wasn't always logical. I like your suggestions for additions too. I'll get on this revision. Thanks! |
The Getting Started with s2Member KBA has grown beyond the point where it can be published as a single KBA. At this point the draft is nearly 22,000 words long. It grew beyond being editable in GitHub months ago and I imported the markdown document into MS Word. I've been working on it in Outline View ever since. Once I hit 20,000 words I pretty much knew it was not going to see the light of day as a single KBA. A couple of weeks ago I thought I had posted this document to Google Drive with a message similar to this posted on GitHub and in Slack. Turns out I was either dreaming, or who knows. I spoke to Jason about this when we talked in Slack last week and he asked me to go ahead and try to come up with a suggested plan of action to get the document published both as a series of KBAs and eventually as an s2Member User's Guide. I have now uploaded the draft (there are still sections that are just placeholders) Below is the current Table of Contents with major sections listed along with suggested order for releasing these as KBAs. Please take a look at least at the TOC below and let me know your thoughts: no real need to read the entire document, but feel free to do so if you'd like. You'll of course review each section as they are released as KBAs and then go over the User's Guide for formatting problems and missed typos before we turn it into a PDF. Current Table of ContentsAn Introduction to s2Member(Suggest this as KBA #1) Exactly What IS s2Member?How Have Others Used s2Member?How Does s2Member Use Shortcodes?What If I Want to Customize s2Member with Code?Getting Ready for s2Member(Suggest this as KBA #2) Have a PlanLogin Welcome PageMembership Options PageInstalling s2Member(Suggest this as KBA #3) Installing the s2Member Framework (Free Version)Installing s2Member ProKeeping s2Member UpdatedConfiguring s2Member(Using PayPal as the Example Payment Gateway) General Options(Suggest this as KBA #4) Restriction Options(Suggest this as KBA #5) Cancellations/Expirations/Terminations(Suggest this as KBA #6) Upgrading and Downgrading Member Accounts(Suggest this as KBA #7) Giving Members the Ability to Modify Their Subscriptions(Suggest this as KBA #8) Registration Before Checkout?(Suggest this as KBA #9) Configuring Payment GatewaysPayment Gateways Supported(Suggest this as KBA #10) Configuring PayPal(Suggest this as KBA #11) Configuring Stripe(Suggest this as KBA #12) Configuring Authorize.net(Suggest this as KBA #13) Configuring ClickBank(With permission, I'd like to adapt Kristine's ClickBank KBA for the User Guide) Configuring JVZoo(Not officially supported, but there is info out there about configuring this gateway and I'd like to add it to the *User's Guide&) Generating Pro-FormsUses PayPal for examples. (Suggest this as KBA #15) Customizing Member Emails(Suggest this as KBA #16) Advanced s2Member FeaturesPro-Coupon Codes(Suggest this as KBA #17) API/Tracking(Suggest this as KBA #18) API/List Servers(Suggest this as KBA #19) API/Notifications(Suggest this as KBA #20) API/Scripting(Suggest this as KBA #21) |
@patdumond That sounds like a great plan to me. It would be extremely useful to have KB Article versions of the guide anyway, as that would make it possible to link to specific articles when needed, as opposed to sending someone an entire guide and telling them to look up a specific chapter. I still think the guide is a good idea though, as many people will want something comprehensive that they can download and explore offline. I also like what you've suggested as KB Articles. The title of each article will need to change slightly to make each one more descriptive, but the sections you've suggested turning into KB articles looks great to me. If you start opening GitHub issues and getting each one drafted as a KB Article (intro, body, summary), I'll start reviewing and publishing those. I've also created a new label called |
@raamdev: Thanks for the comments and the "go-ahead". I have created a list on my Writing board in Trello for this entire project. Each KBA has a card as does the final User's Guide and its accompanying KBA. My plan of action is to integrate each individual KBA (as per our final revisions for each KBA) into the master User's Guide document as they are published and ask you to review that particular chapter. I'll make your suggested revisions to each individual chapter. That way when the final document is ready we can just give it a quick once-over for typos and minor errors we might have missed: major problems will already have been addressed. After all the individual KBAs are completed, integrated, reviewed, and revised I'll create an Index and Table of Contents for User's Guide. Then I'll ask you to do a final review, make any final revisions and then we can publish the Guide in both PDF and KBA form. |
@patdumond That sounds great! Thank you. :-) |
Closing this issue. The "Getting Started" section of the Users' Guide was replaced by Introduction to s2Member which was published here: http://s2member.com/kb-article/introduction-to-s2member/ |
KB Article Creation Checklist
s2Member is a powerful WordPress plugin. It can do so many things and can be highly customized, but such complexity can be daunting when you are first getting started with the plugin. There is a Quick-Start panel in the dashboard WordPress Dashboard →s2Member® → Quick-Start Guide but users requested a complete tutorial.
How the Registration Process Works
s2Member (Free Version) / PayPal Button
Username
and aPassword
. (Note: they'll be allowed to register, even if you've set Anyone Can Register toOff
in your WordPress General Settings options. s2Member identifies the member as having paid for membership access through PayPal).Username
&Password
, they will be able to log in. The first page they will see after logging in will be your Login Welcome Page (which you will need to configure on the s2Member General Options panel).(See: WordPress Dashboard →s2Member® → General Options → Login Welcome Page). Your Login Welcome Page can contain whatever you like. You'll need to design this Page in WordPress Dashboard → Pages → Add Page.s2Member (Pro) / Pro-Forms
Payment Gateways
sThe free version of s2Member supports PayPal Website Payments Standard using PayPal Buttons. This payment gateway is enabled in both s2Member and s2Member Pro.
s2Member Pro supports several additional payment gateways. These gateways are:
To enable any (or all) of these payment gateways, please see WordPress Dashboard →s2Member® → Other Payment Gateways.
Note: For the remainder of this tutorial, we will assume you are using PayPal Website Payments Pro with Pro-Forms.
Registration Process Using PayPal Pro-Forms
The user will complete the profile information on the Pro-Form. This must include the following:
Additional fields you can use:
They will then choose a payment method and complete the required payment information. If they select PayPal as their Billing Method, they will be taken to PayPal to complete the payment. If they use a credit card, the transaction will take place completely on your website.
The Login/Registration Form
s2Member uses the existing WordPress Login/Registration system. This is the same Login/Registration Form that you use to access your WordPress Dashboard. However, with s2Member installed, your Login/Registration Forms can be customized (i.e., re-branded). See: s2Member → General Options → Login/Registration Design.
You can make the default Login/Registration forms match your WordPress theme design. You can change the background color or image, customize the logo image, add Custom Registration Fields, and more!
Since s2Member uses the default Login/Registration system for WordPress, s2Member is also compatible with themes and other plugins (such as BuddyPress). If your theme has a login form built-in already, chances are, it's perfectly compatible with s2Member. There are also many plugins available that are designed to place login forms into your Sidebar, and many of those are also compatible with s2Member's integration. If you have any trouble, please check the s2Member Forums for assistance.
The Login Welcome Page
The Login Welcome Page (or LWP) is a WordPress page you create just as you would create any other page in WordPress. The LWP is a Page, not a Post. It is the first page Members will see after logging into your site.
You should create at least an empty LWP before you start configuring anything else in s2Member. We recommend you call it My Login Welcome Page, but you can call it Fred if you want -- just remember what you titled it.
After you've created this LWP, you configure it on this panel: WordPress Dashboard →s2Member® → General Options → Login Welcome Page. Please see the section below describing that panel for details.
Once you have all of your s2Member → General Options configured, and once you have a basic understanding of how s2Member works, go back and customize the title and content for the LWP. You'll want to be creative with your Login Welcome Page. However, you should configure your WordPress Dashboard → s2Member → General Options first, and test things out. That way you'll understand why the LWP is important.
For more details, see this s2Member KB article, Customizing Your Login Welcome Page.
The Membership Options Page
The Membership Options Page (or MOP) is a WordPress page you create just as you would create any other page in WordPress. The MOP is a Page not a Post.
Your Membership Options Page should detail all of the features that come with Membership to your site, and provide a Payment Button (or Pro-Form; if you're running s2Member Pro) for each Level of access you plan to offer. The MOP is the Page that visitors will see should they attempt to access an area of your site restricted above their current level of access. The redirection is handled seamlessly by s2Member.
You should create at least an empty MOP before you start configuring anything else in s2Member. We recommend you call it My Membership Options Page, but you can call it Barney if you want -- just remember what you titled it.
After you've created this MOP, you configure it on this panel: WordPress Dashboard →s2Member® → General Options → Membership Options Page.
Tip: If you allow Open Registration (i.e., Free Subscribers), you might want to place a link on your Membership Options Page that points directly to your Free Registration Form, instead of routing a Customer through your Payment Gateway first. It's a matter of preference, though.
Always Public: This Page must be public at all times. Access cannot be restricted to the Membership Options Page. Note: for technical reasons, your Membership Options Page cannot be set to your Front Page (i.e., your Home Page); or your Posts Page (i.e., your main Blog page). Please create a separate (dedicated) Page in WordPress, and then designate it as your Membership Options Page.
s2Member General Options
Once you have a Login Welcome Page, and a Membership Options Page go to WordPress Dashboard → s2Member → General Options. Here you will configure general options for s2Member.
Plugin Deletion Safeguards
By default, s2Member will retain all of it's Roles, Capabilities, and your Configuration Options when/if you delete s2Member from the Plugins Menu in WordPress. However, if you would like for s2Member to erase itself completely, please choose: No (upon deletion, erase all data/options). See also: s2Member Uninstall Instructions.
Security Encryption Key
Just like WordPress, s2Member is open-source software, and that is wonderful. However, this also makes it possible for anyone to grab a copy of the software, and try to learn their way around its security measures. To keep your installation of s2Member unique and secure, you should configure a Security Encryption Key. s2Member will use your Security Encryption Key to protect itself against hackers. It does this by encrypting all sensitive information with your key. The Security Encryption Key is unique to your installation.
Once you configure this, you do not want to change it -- ever! It is a very good idea to keep this backed up in a safe place too, in case you need to move your site or re-install s2Member in the future. Some of the sensitive data that s2Member stores is encrypted with this key. If you change the key, that data can no longer be read even by s2Member itself. In other words, don't use s2Member for six months and then decide to change your key. That would break your installation.
How s2Member Uses the Key
The Security Encryption Key is used throughout s2Member's source code for many different things. However, most (not all, but most) uses of this key are related to transactional processing within a particular session; so changing the key won't impact these scenarios in any significant way. The Security Encryption Key is simply there to enhance the security of transmitted data.
That said, there are a few scenarios where the use of the Security Encryption Key is long-term, including Specific Post/Page Access Links and Registration Access Links. It can also have a long-term impact on IPN communication because some data analyzed by s2Member includes a checksum that depends on the key. If the key changes, it could cause future IPN data (i.e., data from your payment gateway) to fail validation.
Localhost WAMP/MAMP Developers
If you're developing your site in a
localhost
environment, running something like WAMP/MAMP or EasyPHP, please add this line to your/wp-config.php
file:define("LOCALHOST", true);
.This configuration lets s2Member know that your site is in a localhost environment. s2Member will adjust itself accordingly, maximizing functionality during your development. s2Member can usually auto-detect this, but in cases where your localhost installation runs on something other than
127.0.0.1/localhost
, you need to tell s2Member definitively by adding that line to your/wp-config.php file
. For instance, s2Member needs to know when your server IP is the same as all User IPs.Once your site goes live, please remove the line. If you're already on a live server connected to the web, please ignore this section.
CSS/JS Lazy Loading
By default, s2Member will load its CSS/JS libraries on every page of your site. However, you may wish to enable lazy-loading by enabling it here. Select: Yes (lazy-load CSS/JS libraries (i.e., only load when absolutely necessary).
<!--s2member-->
. If a Post/Page contains the words2member
or an[s2*
shortcode, this will automatically trigger s2Member's lazy-load routine (no matter what you configure here). Thus, it's an easy way to force s2Member to load its CSS/JS on specific Posts/Pages where you deem this necessary. There is also a WordPress filter available:add_filter("ws_plugin__s2member_lazy_load_css_js", "__return_true");
for developers. This filter can be used in more dynamic scenarios.*s2Member Security Badge
Security Badge Configuration
An s2Member Security Badge (optional), can be used to express your site's concern for security -- demonstrating to all site visitors that your site and s2Member take security seriously.
To qualify your site, you must generate a Security Encryption Key as described above. s2Member will not verify your site if you turn off Unique IP Restrictions, Brute Force Login Protection, or if your
/wp-config.php
file lacks Security (SALT) Keys (each at least 60 chars in length). Also, it's not possible for s2Member to verify your Security Badge if your site is in alocalhost
environment; i.e., not connected to the web.Once you've properly configured all security aspects of s2Member, your s2Member Security Badge will be verified. To see the Verified version of your Security Badge, you might need to refresh your browser after saving all changes.
Please see this s2Member KB article, Security Badges for detailed instructions on qualifying your site for the s2Member Security Badge.
How does s2Member know when my site is secure?
If enabled below, an API call for
Security Badge Status
will allow web service connections to determine your status. Clicking this link will report1 (secure),'
0 (at risk), or
- (API disabled).' Once all security considerations are satisfied, s2Member will report1 (secure)
for your installation.**Note: this simple API will not, and should not, report any other information. It will only report the current status of your Security Badge, as determined by your installation of s2Member. When you install the s2Member Security Badge, s2Member will make a connection to your site once per day, to test your status.
Customize WordPress Footer
You can add the s2Member Security Badge to your WordPress footer by clicking the Click HERE to insert your Security Badge link shown in the screenshot below. You can add any valid XHTML, JavaScript, or PHP code you want to add to your footer in the text box.
Email Configuration
You configure the emails sent automatically by s2Member here. You need to complete the following fields:
mailto:
link with an email address (support@example.com
) or a web URL (http://www.example.com/contact
).New User Email Configuration
You can further customize the emails sent to new users and the site's administrative contact here. First, select Yes (customize New User Emails with s2Member) then customize the email formats using the click to customize links below.
New User Email Configuration
This email is sent to new Users/Members who did not set a password during registration.
New User Email Subject
The Subject Line used in the email sent to new Users/Members.
New User Email Message:
The purpose of this email is to send the user a link to set their password (
%%wp_set_pass_url%%
). You can modify the body of the email using plain-text and s2Member replacement codes. Please see WordPress Dashboard →s2Member®(Pro) → General Options → Email Configuration → New User Email Message (click to customize) for the list of available replacement codes.Administrative: New User Notification
This email is sent to you (or the administrative contact, if not you) each time a new User/Member registers. Customization is the same as the New User Email Configuration section above.
Open Registration
s2Member supports Free Subscribers (at s2Member
Level 0
/WordPress RoleSubscriber
), along with four Primary Levels (1 - 4) of paid Membership. If you want your visitors to be capable of registering for free, you will need to enable Open Registration by setting Allow Open Registration? to Yes (allow Open Registration; Free Subscribers at Level #0). Whenever a visitor registers without paying, they'll automatically become a Free Subscriber atLevel 0
.Membership/Levels Labels
s2Member uses Membership Levels to enforce content restrictions. Please customize these to match your site requirements. The default Membership Levels have generic labels. Feel free to modify them as desired.
s2Member supports Free Subscribers (at Level #0), along with several Primary Roles for paid Membership (i.e., Levels 1 - 4) created by the s2Member plugin. s2Member also supports unlimited Custom Capability Packages (see WordPress Dashboard →s2Member® → s2Member → API Scripting → Custom Capabilities). You don't have to use all of the Membership Levels if you don't need them. To use only 1 or 2 of these Levels, just design your Membership Options Page so it only includes payment options for the levels required.
If you're an advanced site owner, a theme designer, or a web developer integrating s2Member for a client, please see WordPress Dashboard →s2Member® → API Scripting → Custom Capabilities. We also recommend this video tutorial.
See also: These s2Member KB articles: [s2Member Roles/Capabilities}(http://www.s2member.com/kb/roles-caps/) and Simple Shortcode Conditionals.
Unlimited Membership Levels (via
/wp-config.php
)With s2Member Pro installed, you may configure an unlimited number of Membership Levels. You can set the number of Membership Levels by adding this line to the top of your
/wp-config.php
file:define("MEMBERSHIP_LEVELS", 4);
. This line should be inserted at the top of your/wp-config.php
file, right after the<?php
tag. Simple change the default value of4
to whatever you need. The minimum allowed value is1
. The recommended maximum is100
. If you intend to exceed the recommended maximum, you will also need to add a WordPress Filter like this:add_filter("ws_plugin__s2member_max_levels", function(){ return PHP_INT_MAX; });
Customizing Membership Level Labels
Use the fields on this panel to customize the labels for your Membership Levels.
Force WordPress to Use Your Labels?
Forcing WordPress to user your s2Member labels affects only your WordPress Dashboard (that is, your list of Users).
s2Member can force WordPress to use your Labels instead of referencing Roles such as
s2Member Level 1
. If this is your first installation of s2Member, we suggest setting this toNo
until you've had a chance to become familiar with s2Member's functionality. In fact, many site owners choose to leave this off, because they find it less confusing when Roles are called by their s2Member Level number.Reset Roles/Capabilities
The button on the bottom right of this panel is a nifty tool that allows you to reset s2Member's internal Roles and Capabilities * which integrate with WordPress. If you, or a developer working with you, has made attempts to alter the default internal *Role/Capability sets that come with s2Member and you need to reset them back to the way s2Member expects them to be, please use this tool.
_Attention Developers: it is also possible lock-in your modified _Roles/Capabilities* with an s2Member Filter. Please see this KB article for details.
Login/Registration Design
These settings customize your Standard Login/Registration Pages:
http://www.example.com/wp-login.php?action=register
.To customize the login/registration page you need to select Yes (customize Login/Registration with s2Member) from the drop-down under Enable This Functionality?.
The remaining fields on this panel are the things you can customize:
Registration/Profile Fields & Options
You can use this panel to add custom registration/profile fields for your members. Some fields are already built-in. They are: Username, Email, First Name, Last Name.
Custom Fields will appear in your Registration Form, and in User Profiles.
Regarding Registration: Custom Fields do not appear during repeat registration/checkout attempts (i.e., they do not appear to any user currently logged into the site). Please make sure that you test registration and checkout forms while not logged in (i.e., please test as a first-time customer). Existing users, members, customers may update Custom Fields by editing their Profile.
You create new Custom Registration/Profile Fields by clicking Add New Field underneath Custom Registration/Profile Fields. For each custom field you'll need to provide the following:
onkeyup=""
oronblur=""
to this field, enter them here;. Otherwise, leave this blank.Other Registration Settings
Collect First/Last Names During Registration?
If you are selling memberships, you'll want to leave this enabled, because s2Member Pro Forms always require a first and last name. If you only have free members, this is optional.
Set "Display Name" During Registration?
You can choose from several options for setting the Member's Display Name at registration.
Allow Custom Passwords During Registration?
Custom Passwords are easier for users. However, this has an impact on site security. Enabling Custom Passwords disables the New User Notification email that sends a password setup link for each user. In other words, enabling Custom Passwords effectively disables any email verification procedure.
Minimum Length/Strength for Custom Passwords
You can choose a minimum number of characters and complexity requirements for user-selected passwords.
Force Personal Emails During Registration?
You can enter commonly-used "catch-all" email prefixes (for example: admin, webmaster) here to encourage users to enter a personal email address.
See this article for a comprehensive list of such emails to ban.
Integrate Custom Registration/Profile Fields with BuddyPress?
If you are using BuddyPress, you can choose to integrate s2Members Custom Registration Fields with the BuddyPress Public Profiles, Registration Form, and the BuddyPress Profile Editing Panel.
Login Welcome Page
Please create a new Page or choose an existing Page to use as the first page Members will see after logging in.
Always Private: This Page will always require a logged-in User/Member. In fact, this Page will be protected from public access by s2Member automatically. Note: for technical reasons, your Login Welcome Page cannot be your Front Page (also known as your Home Page) or your Posts Page (i.e., your main Blog page). Please create a dedicated Page in WordPress and then designate it as your Login Welcome Page as described below.
See also: This KB article: Customizing Your Login Welcome Page.
One-Time-Offers (Upon Login)
This optional setting allows you to override your default Login Welcome Page based on the number of times a User/Member has logged in previously. s2Member gives you the ability to write a custom configuration file for these One Time Offers. This configuration file will then display pages you have created when the User/Member logs in for your designated number of times. You can specify designated logins by s2Member User Level as well, allowing you to customize your Onboarding Experience.
One-Time-Offer Configuration File
Enter the name of your One-Time-Offer Configuration File in the text box in the WordPress Dashboard →s2Member® → General Options → One-Time-Offers (Upon Login). This file contains a line-delimited list of URLs named in the special format below.
Special Format
[Logins]:[Access Level]:[One-Time-Offer URL]
[Logins]
is an integer designating the number of logins that trigger the offer. The offer is triggered on the login with the value entered here (this triggers your One-Time-Offer page uponx
number of logins). That is, a1
will trigger the offer on the first login, and a10
will trigger the offer on the tenth.[Access Level]
This optional value triggers your One-Time-Offer, based on s2Member User Level as well as the designated[Logins]
value.[One-Time-Offer URL]
This is the full URL to the page you want the User/Member to see upon the designated login.Example Configuration File
Replacement Codes
Advanced site owners can use these Replacement Codes in their One-Time-Offer URLs.
{*** Fill in Replacement Codes ***}
Membership Options Page
Member Profile Modifications
s2Member can be configured to redirect Members away from the default Profile Editor (WordPress Dashboard → Users → Your Profile) built into WordPress. When a Member attempts to access the default Profile Editor, they'll instead be redirected to the Login Welcome Page that you've configured with s2Member.
Why would I redirect away from the default Profile Editor?
Unless you've made some drastic modifications to your WordPress installation, the default Profile Editor that comes with WordPress is not suited for any public access.
So instead of using it, s2Member provides you (the site owner) with a special Shortcode:
[s2Member-Profile /]
. You can insert this into your Login Welcome Page, or any Post/Page for that matter (even into a Text Widget). This Shortcode produces an Inline Profile Editing Form that supports all aspects of s2Member, including Password changes and any Custom Registration/Profile Fields that you've configured with s2Member. Alternatively, you can send your Members to a special Stand-Alone version. The stand-alone version makes it possible for you to open it up in a popup window, or embed it into your Login Welcome Page using an IFRAME.Shortcode (Copy/Paste)
[s2Member-Profile /]
This shortcode displays the Inline Profile Modification Form in a WordPress Page, Post, or Text Widget.Stand-Alone (Copy/Paste)
To display the Stand-Alone Profile Editor in a popup window use this HTML code:
<a href="#" onclick="window.open('http://pat.websharks-inc.net/?s2member_profile=1', '_popup', 'width=600,height=400,left=100,screenX=100,top=100,screenY=100,location=0,menubar=0,toolbar=0,status=0,scrollbars=1,resizable=1'); return false;">Modify Profile</a>
URL Shortening Service Preference
In a few special cases, long URLs generated by s2Member (i.e., those containing encrypted authentication details) will be shortened. URLs are shortened automatically, using one of the URL Shortening APIs. A shortened URL prevents issues with very long links becoming corrupted by a Customer's email application. For instance, the Signup Confirmation Email that s2Member sends out to a new paying User/Member may contain a link that is shortened to prevent corruption by email applications. By default, s2Member uses the tinyURL API. tinyURL has proven itself to be the most reliable. However, in cases where an API service call fails, s2Member will automatically use one or more of its other APIs as a backup. The option below allows you to configure which URL Shortening API s2Member should try first (i.e., the one you prefer). Simply select your preferred provider from the drop-down list. If your preferred provider requires an access token or API Key, enter it into the text box below the drop-down.
CAPTCHA Anti-Spam Security
Please note. s2Member does not introduce a CAPTCHA (i.e., a challenge-response) into any core feature for WordPress. We've excluded this functionality on purpose because many site owners prefer to use a more comprehensive CAPTCHA plugin that encompasses all aspects of their site.
s2Member Pro-Forms for Stripe, PayPal Pro and Authorize.Net (including Free Registration Forms) can be configured to use Google's reCAPTCHA™ service (free). Just add this attribute to your Pro-Form Shortcode: captcha="light". Or, use captcha="dark", for a dark-themed reCAPTCHA™ box instead.
You'll need to create a free set of keys for your s2Member site to use reCAPTCHA™. Enter the keys into the appropriate text boxes on this s2Member Panel.
Restriction Options
Once you have configured your s2Member General Options go to WordPress Dashboard → s2Member → Restriction Options. Here you will configure options for restricting access to various parts of your website with s2Member. Note: You can also restrict access to Posts and Pages using the s2Member meta box on the Post and Page editing panels.
Post Access Restrictions
Here you can specify Posts that are restricted to certain Membership Access Levels. s2Member also supports Custom Post Types here. If you have a theme or plugin installed that has enabled Custom Post Types you can put the IDs for those Posts here as well.
What do I enter?
Enter Post IDs in comma-delimited format. Example:
1,2,3,84,8,21
. Or you can type:all
to protect all Posts of any type. You can also restrict access to all Posts of a specific Post Type. For example,1,2,3,all-newspapers
protects several Post IDs and all Posts oftype: newspaper
.Note: Protecting individual Posts only protects the Permalinks for those Posts. It is still possible for excerpts of protected content to be seen in search results generated by WordPress, feeds, and Archive views including your Home Page, inside a Category * listing, or through other queries formulated by your theme. This is the intended functionality. Excerpts are a great way to "tease" public visitors. In other words, public visitors may have access to excerpts introduced by your theme but any attempt to view the full *Post (via the Permalink) will result in an automatic redirect to your Membership Options Page.
Note: If you would like to protect many Posts at once (including Archive views), you can use Category Level Restrictions, Tag Level Restrictions, or use s2Member's options for Alternative View Protection which deals with search results and menus as well as feeds.
Tip: Can't find your Post IDs? Get WP Show IDs
Page Access Restrictions
Here you can specify Pages that are restricted to certain Membership Access Levels.
What do I enter? Page IDs in comma-delimited format. Example:
1,2,3,34,8,21
. Or, you can typeall
to protect all Pages.Tag Access Restrictions
Here you can specify Tags that are restricted to certain Membership Access Levels. When you restrict access to a Tag Archive it also restricts access to any Post *having that *Tag even if the Post has other Tags.
Tip: Tags can be applied to any Post without affecting your Category structure at all. If you'd like to use Tags with Pages get the Tag Pages plugin.
What do I enter? Tags in comma-delimited format. Example:
members, members only, free subscribers, premium
. Or, you can typeall
to protect all Tags. Note: Tags are caSe sensitive. The Tagmembers only
is not the same asMembers Only
.Category Access Restrictions
Here you can specify Categories that are restricted to certain Membership Access Levels. Category restrictions are a bit more complex than the previous types of restrictions because Categories are hierarchical. When you restrict access to a Category, it also restricts access to any child Categories it may have. In other words, restricting a Category protects a Category Archive, all of its child Category Archives, and any Posts contained within the Category or its child Categories. Access by Category is a very powerful form of protection, so please be careful. It's very easy to protect too much content by accident.
What do I enter? Category IDs in comma-delimited format. Example: 1,2,3,34,8,21. Or, you can type
all
(to protect all Categories).Tip: Can't find your Category IDs? Get WP Show IDs.
URI Restrictions (Typical w/BuddyPress)
Here you can specify URIs (or word fragments found in URIs) restricted to certain Membership Access Levels. Control over URIs is a little more complex. This section is for advanced webmasters only. An REQUEST_URI is the portion of a URL that comes immediately after the domain. This is a URL
http://www.example.com/path/to/file.php
, and this is the URI:/path/to/file.php
. In other words, an REQUEST_URI is a full path to a real (or virtual) directory or file on your domain. s2Member can match a URI in whole, or in part.What do I enter? In the fields below, you can provide a list of URIs (one per line; i.e., line-delimited) that should be off-limits based on Membership Level. You can also use word fragments instead of a full URI. If a word fragment anywhere in the URI matches, it will be protected. Wildcards and other regex patterns are not supported here, so you don't need to escape special characters or anything. Please note, depending on your caSe configuration option (as seen below), your exclusion patterns might be caSe sensitive. If you choose to make these caSe sensitive, you must be specific. The word fragment some-path/ would not match a URI that contains some-Path/.
Replacement Codes: Here are a few Replacement Codes you can use in URI Restrictions.
%%current_user_nicename%%
= The current User'sNiceName
in lowercase. TheNicename
is a cleaner version of the Username for URLs.%%current_user_id%%
= The current User's ID.%%current_user_level%%
= The current User's s2Member Level.%%current_user_role%%
= The current User's WordPress Role.%%current_user_ccaps%%
= The current User's Custom Capabilities.%%current_user_logins%%
= The number of times the current User has logged in.BuddyPress (and similar): *URI Restrictions work great with plugins like BuddyPress that add new areas to your site (where those new areas are not necessarily a Post/Page/Tag/Category). In other words, any time you'd like to protect a specific feature offered by BuddyPress (or other plugins), you'll need to nail down specific word fragments found in the URIs associated with those areas. For example, if you are using BuddyPress and want to protect BuddyPress Groups, you could add URI protection like this:
/members/%%current_user_nicename%%/groups
.Alternative View Protection (feeds, search results, etc.)
s2Member protects Categories, Tags, Posts, Pages, Files, URIs & more. However, even with all of those security restrictions, it's still possible for protected content excerpts to be seen through XML feeds, in search results generated by WordPress, and, depending on your theme, possibly in other Archive views. These might include: Posts by Author, Posts by Date, a list of featured items formulated by your theme or other plugins. We refer to all of these collectively, as Alternative Views.
Using the options below, you can tell s2Member to protect these Alternative Views by filtering WordPress database queries for you. s2Member can automatically hide protected content that is not available to the current User/Member. In other words, s2Member is capable of pre-filtering all database queries so that excerpts of protected content will not be allowed to slip through.
Protect Alternative Views?
Select as many of the options in this list as you want or select Filter ALL WordPress queries; protecting all Alternative Views.
For Developers
Filters can be suppressed dynamically using this technique:
See this article in the s2Member Codex.
Simple Shortcode Conditionals (protect only parts of your content)
s2Member makes it very easy to protect entire Posts, Pages, Categories, Tags, URIs, etc. Protecting this content can be accomplished here in your WordPress Dashboard, using one (or all) of the many tools available in the s2Member settings panels. Or, from the Post/Page editing panel in WordPress. We consider this to be point-and-click functionality—very easy.
However, s2Member also makes it possible for you to protect "parts" of a Post or Page. You can be creative about what you display to certain Users/Members, based upon your custom criteria. s2Member's Simple Shortcode Conditionals are the key to accomplishing this.
Please see this KB article to learn more about [s2If /]: s2Member Simple Shortcode Conditionals](http://s2member.com/kb-article/s2if-simple-shortcode-conditionals/).
Arbitrary PHP Code via
[s2If php=""]
By default, the
[s2If]
Shortcode can be used only in a specific set of Conditional Tags provided by WordPress and the s2Member plugin. For example:[s2If current_user_can(access_s2member_level1)]
. Arbitrary PHP code is not allowed with this syntax. However, it is possible to use arbitrary PHP code if you enable it in the drop-down under *Allow Arbitrary PHP Code via the[s2If php=""]
. This second syntax variation uses one PHP Shortcode Attribute to run a single conditional check. For example:[s2If php="is_user_logged_in() && current_user_can('access_s2member_ccap_music')"]
. For developers, this has some obvious advantages. The code inside the PHP attribute is evaluated at runtime, so it's possible to accomplish more when necessary. You could also use a plugin like ezPHP to accomplish the same thing.Specific Post/Page Access Restrictions
s2Member supports an additional layer of functionality that allows you to sell access to specific Posts/Pages that you've created in WordPress. s2Member's Specific Post/Page Access works independently of Membership Level Access. You can sell an unlimited number of Posts/Pages using "Buy Now" Buttons (or Pro-Forms; if you're running s2Member Pro) — your Customers will not be required to have a Membership Account on your site to receive access. If they are already a Member, that's fine, but they won't need to be.
In other words, Customers will not need to log in to receive access to these specific Posts and Pages. s2Member will immediately redirect the Customer to the correct Post/Page after checkout completes successfully. s2Member /WordPress also send an email to the Customer with a link (see: WordPress Dashboard → s2Member → PayPal Options → Specific Post/Page Email). If you are using a different payment gateway, simply substitute that name for PayPal. Authentication is handled automatically through self-expiring links that last for 72 hours by default.
Specific Post/Page Access is like selling a product. Instead of shipping anything to the Customer you just give them access to a specific Post or Page on your site. A Specific Post/Page that is protected by s2Member might contain a download link for your eBook, access to file & music downloads, access to additional support services, or any number of things. The possibilities with this are virtually endless if you can deliver your digital product on a WordPress Post/Page that you've created.
Very simple. All you do is protect the Specific Post/Page IDs you are selling on your site. Then, you can go to WordPress Dashboard → s2Member → PayPal Buttons → Specific Post/Page Restrictions to generate "Buy Now" Buttons that you can insert into your WordPress Editor and make available on your site. The Button Generator for s2Member will even let you package multiple Posts and Pages together into one transaction.
What do I enter? Post/Page IDs in comma-delimited format. Example: 1,2,3,34,8,21. Note: the word
all
does not work here. You must supply a list of Specific Post/Page IDs.Avoid Conflicts! *Please be careful not to create a conflict with any of your other Access Restrictions. If you are going to sell Specific Post/Page Access, you should enter Specific Post/Page IDs that have not already been protected by other Restrictions directly or indirectly. In short, make sure that you haven't protected any of your Specific Posts/Pages with Member Level Access Restrictions already. If you configure s2Member in such as a way, that a Post/Page requires both Membership Level Access and Specific Post/Page Access, you will create a conflict. Customers that purchase Specific Post/Page Access would be unable to access the Post/Page without also having a Membership.
Brute Force IP/Login Restrictions
As with any authentication system, it is possible for someone to try and guess Username/Password combinations by attempting a Brute Force Attack: making repeated login attempts with various Username/Password combinations until the user or software program guesses correctly.
This type of attack is unlikely, but it's still a good idea to protect your system, just in case. s2Member thwarts this behavior by monitoring failed login attempts occurring within a short period. Whenever s2Member detects an IP address (i.e., a remote user) consistently failing to enter a valid Username/Password, a temporary ban is created. This ban prevents additional attempts from taking place for 30 minutes. This temporary ban will only affect the offending IP address.
*Note: an empty IP address (associated with someone browsing anonymously) is also considered a unique IP address. This way anonymizers cannot circumvent s2Member's security.
Maximum Failed Login Attempts:
Select the maximum number of failed login attempts from the drop-down box under Maximum Failed Login Attempts. When you change this value, you should also reset the brute force logs using the blue button at the top of this panel.
Unique IP Access Restrictions
As with any Membership system, it is possible for one Member to sign up and then share their login credentials with someone else or post it online for the whole world to see. This type of attack is unlikely, but it's still a good idea to protect your system. s2Member's IP Restrictions work for Membership Level Access (i.e., account logins), Specific Post/Page Access, Registration Links, and other secure Entry Points. In all cases, the rules are simple. A single Username, Access Link, or Entry Point is only valid for a certain number of unique IP addresses.
Once that limit is reached, s2Member assumes there has been a security breach. At that time, s2Member will create a temporary ban; preventing access to a Specific Post/Page, or to an account associated with a particular Username. This temporary ban will only affect the offending Link or Username associated with the security breach. You can fine-tune this behavior using the options on this panel.
Note: an empty IP address (associated with someone browsing anonymously) is also considered a unique IP address. This way anonymizers cannot circumvent s2Member's security.
Note: _This feature can work with or without _Simultaneous Login Monitoring* (Simultaneous Login Monitoring is an s2Member Pro feature). You can choose to implement both Unique IP Access Restrictions and Simultaneous Login Monitoring together, just one of them, or neither. It's a matter of preference.
Simultaneous Login Monitoring has the added benefit of not being dependent upon IP address tracking—making it more user-friendly and reliable. This process is particularly helpful in cases where you'd like to support users who might travel a lot, have multiple devices, or be on ISPs that change their IP address frequently.
Simultaneous Login Restrictions
s2Member's Simultaneous Login Monitoring (for Membership Access only) works with account logins (Usernames), to help you prevent a security issue. The rules are simple. A single Username can only have X number of simultaneous logins (as configured below). Once that limit is reached, s2Member assumes there has been a security breach.
At that time, s2Member will create a temporary ban preventing the offending
Username
from being able to log in until somebody else logged into the account has logged-out.Simultaneous Login Monitoring can be a tricky feature to configure because most people do not click a "Logout" link when they leave a website, making it hard to know when someone is still logged-in, and when they're not. s2Member monitors simultaneous logins by updating a timer whenever someone logs in and then again on each page view while they navigate the site.
If there is no activity within X amount of time, s2Member's Simultaneous Login Monitor considers that person inactive, and will not include them in security checks until they log in again or visit a new page on the site. You can configure the timeout period on this panel. The default value is 30 minutes.
Note: _This feature can work with or without _Unique IP Restrictions*. You can choose to implement both Unique IP Access Restrictions and Simultaneous Login Monitoring together, just one of them, or neither. It's a matter of preference.
Simultaneous Login Monitoring has the added benefit of not being dependent upon IP address tracking — making it more user-friendly and reliable. This process is particularly helpful in cases where you'd like to support users who might travel a lot, have multiple devices, or be on ISPs that change their IP address frequently.*
Cancellations / Expirations / Terminations
You'll be happy to know that s2Member handles cancellations, expirations, failed payments, terminations (e.g., refunds & chargebacks) for you automatically. If you log into your PayPal account and cancel a member's subscription, or if the Member logs into their PayPal account and cancels their subscription, s2Member will be notified of these important changes and react accordingly through the PayPal IPN service that runs silently behind-the-scene.
The PayPal IPN service will notify s2Member whenever a Member's payments have been failing, and whenever a member's subscription has expired for any reason. The IPN service even supports refunds & chargeback reversals. If you issue a refund to an unhappy customer through PayPal, s2Member will be notified; and the account for that customer will either be demoted to a Free Subscriber or deleted automatically (based on your configuration). The communication from PayPal → s2Member is seamless.
*Some Hairy Details: There might be times whenever you notice that a member's subscription was canceled through PayPal but, s2Member continues allowing the user access to your site as a paid Member. Please don't be confused by this. In 99.9% of these cases, the reason for this is legitimate. s2Member will only remove the User's Membership privileges when an End of Term (EOT) is processed, a refund occurs, a chargeback occurs, or when a cancellation occurs; which would later result in a delayed Auto-EOT by s2Member.
s2Member will not process an EOT until the User has completely used up the time they paid for. In other words, if a User signs up for a monthly Subscription on Jan 1st and then cancels their Subscription on Jan 15th they should still be allowed to access the site for another 15 days. Then on Feb 1st the time they paid for has completely elapsed. At that time, s2Member will remove their Membership privileges by either demoting them to a Free Subscriber or deleting their account from the system (based on your configuration). s2Member also calculates one extra day (24 hours) into its equation, just to make sure access is not removed sooner than a customer might expect.*
Upgrading and Downgrading Member Accounts
s2Member builds upon existing functionality offered through WordPress Roles and Capabilities. From your WordPress Dashboard, go to Users. You can use bulk actions to modify Member Access Levels all at once, or click on an individual Member account to modify only their specific Access Level. If you want to demote a Member temporarily so they cannot access Membership privileges, set their Role to Subscriber. When you're ready to give them their Membership privileges back, change their Role back to one of the s2Member Levels.
All financial details, such as pricing, trial periods, subscription lengths, refunds, and other Customer service issues; should be handled by you, through your PayPal account, and not through WordPress. Feel free to modify your Members' Subscriptions via PayPal as often as you like. s2Member will be notified through the PayPal IPN service behind-the-scenes automatically. For example, if you log into PayPal and cancel a Member's paid Subscription, s2Member will be notified by PayPal behind-the-scenes, and s2Member will remove their Membership privileges at the correct point in time.
If you log into your WordPress Dashboard and delete a Member's account, you will still need to log into PayPal and cancel billing for the account you deleted. In other words, s2Member can be notified automatically of actions you take inside PayPal's interface, but PayPal cannot be notified of actions you take inside your WordPress Dashboard. At least, not in an automated fashion, as that would create a security issue for PayPal. Thus, automation works seamlessly from PayPal » s2Member, but not the other way around.
Upgrading and/or Downgrading User Accounts
s2Member builds upon existing functionality offered through WordPress Roles and Capabilities. Go to the Users panel on the WordPress Dashboard (WordPress Dashboard → Users). You can use bulk actions to modify Member Access Levels all at once, or click on an individual Member account to modify only their specific Access Level.
If you want to demote a Member temporarily so they cannot access content restricted to paid Members, set their Role to Subscriber. When you're ready to give them their Membership privileges back, change their Role back to the appropriate s2Member Level or Role.
All financial details, such as pricing, trial periods, subscription lengths, refunds, and other Customer service issues should be handled by you, through your PayPal account and not through WordPress. You can modify your Members' Subscriptions via PayPal as often as you like. s2Member will be notified through the PayPal IPN service behind-the-scenes.
For example, if you log into PayPal and cancel a member's paid subscription, s2Member will be notified by PayPal automatically, and s2Member will remove their Membership privileges at the correct point in time.
NOTE: _If you log into your _WordPress Dashboard* and delete a Member's account you will still need to log into PayPal and cancel billing for the account you deleted.
In other words, s2Member can be notified automatically about actions you take inside PayPal's interface, but PayPal cannot be notified of actions you take inside your WordPress Dashboard. Thus, automation works seamlessly from PayPal → s2Member, but not the other way around.*
Giving Members the Ability to Modify their Subscription
If you'd like to give your Users (either (Members or Free Subscribers) the ability to modify their billing plan by switching to a more expensive option or a less expensive option, you will generate a PayPal Modification Button. See WordPress Dashboard →s2Member®(Pro) → PayPal Buttons → Subscr. Modification Buttons Configure the updated Level, price, terms, etc. Then place the new Modification Button available to Members who are logged into their existing account with you. For example, you might want to insert a "Level 2" Upgrade Button into your Login Welcome Page, which would up-sell existing *Level 1 Members to a more expensive plan that you offer.
Modification Process: When you send a Member to PayPal using a Subscription Modification Button, PayPal will ask them to log in. Once they're logged in, instead of being able to sign up for a new Membership, PayPal will provide them with the ability to upgrade or downgrade their existing Membership with you, by allowing them to switch to the Membership Plan specified in the Subscription Modification Button.
PayPal handles this nicely, and you'll be happy to know that s2Member has been pre-configured to deal with this scenario as well so that everything remains automated. Their Membership Access Level will either be promoted or demoted, based on the actions they took at PayPal during the modification process. Once an existing Member completes their Subscription Modification at PayPal, they'll be brought back to their Login Welcome Page, instead of sending them to a registration screen.
Also Works For Free Subscribers: Although a Free Subscriber does not have an existing PayPal Subscription, s2Member is capable of adapting to this scenario gracefully. Just make sure that your existing Free Subscribers (the ones who wish to upgrade) pay for their Membership through a Modification Button generated by s2Member. That will allow them to continue using their existing account with you. In other words, they can keep their existing Username (and anything already associated with that Username), rather than being forced to re-register after checkout.
Registration Before Checkout?
By default, s2Member will send a Customer directly to PayPal, and only after checkout completes does the Customer have the ability to register a Username and Password for access to your site. This process works very well in most cases, and it has the benefit of increasing conversion rates because there are fewer obstacles for the Customer on their way to the actual checkout process at PayPal.
We believe the ideal approach is a combined Checkout and Registration process. In one simple step users both register for your site and pay for their membership (available with s2Member Pro using Stripe™, PayPal Pro, and Authorize.Net). However, even with PayPal Standard Buttons, there is a way to accomplish Registration Before Checkout, thereby reversing the process — if you prefer it that way.
With PayPal Standard Buttons, Registration before Checkout is accomplished by enabling Open Registration and then making a PayPal Button available to Free Subscribers. In other words, you can let Visitors register for free at Level #0 (where they have access to very little perhaps) and then charge them for access to higher Member Levels (1 - 4). For further details, please check your WordPress Dashboard here: s2Member → General Options → Open Registration.
s2Member's Simple Conditionals can help you further simplify this process by allowing you to integrate a special PayPal Button on your Login Welcome Page that will be seen only by Free Subscribers. Please check your WordPress Dashboard → s2Member → API Scripting → Simple Conditionals. We also suggest reading the documentation on PayPal Modification Buttons. See: WordPress Dashboard → s2Member → PayPal Buttons → Subscription Modifications.
See also: This KB article: Simple Shortcode Conditionals.
Upgrading to s2Member Pro!
Among many other features and enhancements, s2Member Pro comes pre-integrated with additional payment gateways that work with s2Member Pro-Forms (a powerful s2Member Pro feature). For example, Stripe ( the most popular gateway also supports Bitcoin), PayPal Payments Pro, and Authorize.Net.
Each of these payment gateways integrate credit card processing on your website -customers never leave your site! s2Member Pro-Forms also support PayPal Express Checkout (if you integrate with PayPal Pro) for those customers who prefer to pay with PayPal.
Learn more here: s2Member Pro Features.
Getting Help with s2Member
Troubleshooting
s2Member is pretty easy to setup and install initially. Most of the official documentation is right there in your WordPress Dashboard . There is a lot of inline documentation built into the software. It can take some time to master everything there is to know about s2Member's advanced features. If you need assistance with s2Member, please search the s2Member Knowledge Base, Video Tutorials, and Codex. If you are planning to do something creative with s2Member, you might want to hire a freelance developer to assist you.
See also: s2Member Troubleshooting Guide (please read this first if you're having trouble).
Testing Server Compatibility
Please download the s2Member Server Scanner. Unzip, upload via FTP; then open in a browser for a full report.
Troubleshooting Payment Gateway Integrations
Please use s2Member's Log Viewer. Log files can be very helpful.
Support for s2Member Pro
WebSharks, Inc., supports s2Member Pro. Please visit our Support Center.
The text was updated successfully, but these errors were encountered: