Where is the s2Member data stored in the WordPress database?
Table of Contents
The s2Member plugin uses the WordPress database to store all data; there are no s2Member-specific database tables. For the highest level of compatibility and to keep your database as clean as possible, s2Member uses existing WordPress tables, e.g.,
We do not recommend modifying information in the database directly, however the following information is intended for developers who may need to know how and where s2Member stores information for the purposes of extending s2Member in a custom integration.
Note: We highly recommend backing up your WordPress site and database before making any changes to your site.
Plugin Options and Configuration
All s2Member plugin options (even Pro options) are stored in the
ws_plugin__s2member_options meta key in the
wp_options table. This is a serialized associative array.
<?php $options = get_options('ws_plugin__s2member_options'); print_r($options); // An associative array with MANY array keys.
For a list of all possible option keys in this array, please see:
- s2Member Framework default options array in this file.
- s2Member Pro default options array in this file
User Data and Custom Fields
All s2Member users are WordPress users with additional s2Member-specific data attached to them. All s2Member user-specific details are stored in the
wp_usermeta table with keys that begin with:
s2member_. For instance,
s2member_subscr_id (Paid Subscr. ID),
s2member_subscr_gateway (Paid Subscr. Gateway ID), and many others.
<?php $user_id = 123; $subscr_id = get_user_option('s2member_subscr_id', $user_id); $subscr_gateway = get_user_option('s2member_subscr_gateway', $user_id);
User-specific option keys include, but are not limited to:
s2m_gcs_[post ID]_[MD5 hash]_[MD5 hash](stores Gift/Redemption Codes purchased by a user)
Post/Page Level Restrictions
The Membership Level Restrictions configured from the meta box on each Post/Page are stored in the global Restriction Options settings; i.e., as a part of
ws_plugin__s2member_options in the
wp_options table. You can actually go back to
s2Member → Restriction Options and see them there also.
ws_plugin__s2member_options meta value is a serialized array of options and the Post/Page Restriction options are stored as a comma-delimited list of Post/Page IDs under the associative array keys:
N represents the Membership Levels they are configured for; i.e., requires at least a certain Membership Level.
<?php $options = get_option('ws_plugin__s2member_options'); echo $options['level1_posts']; // e.g., 1,2,3,4,5 echo $options['level1_pages']; // e.g., 6,7,8,9,10
Post/Page Custom Capability Restrictions
These are stored in the
wp_postmeta table for each post where you apply them. They are stored with a postmeta key of
s2member_ccaps_req and are represented by a numerically indexed array of Custom Capability slugs that a site owner decided to require for a given Post/Page.
<?php $post_id = 123; $ccaps = get_postmeta($post_id, 's2member_ccaps_req', true); print_r($ccaps); // array('videos', 'pro', 'unlimited')