* ``` * ———— Shortcode Conditional Equivalent ———— * ``` * [s2If is_user_logged_in()] * You ARE logged in. * [/s2If] * [s2If is_user_not_logged_in()] * You are NOT logged in. * [/s2If] * ``` * *but please note, `else if()` logic is not possible with `[s2If /]`.* * * @package s2Member\API_Functions * @since 3.5 * * @return bool True if the current User is NOT logged in, else false. * * @see http://codex.wordpress.org/Function_Reference/is_user_logged_in is_user_logged_in() */ if (!function_exists ("is_user_not_logged_in")) { function is_user_not_logged_in () { return (!is_user_logged_in ()); } } /** * Conditional to determine if a specific User is/has a specific Role. * * Another function {@link http://codex.wordpress.org/Function_Reference/user_can user_can()} already exists in the WordPress® core. * * ———— Code Sample Using Both Functions ———— * ``` * * ``` * * ———— Shortcode Conditional Equivalent ———— * ``` * [s2If user_is(123, subscriber)] * User ID# 123 is a Free Subscriber at Level #0. * [/s2If] * [s2If user_is(123, s2member_level1)] * User ID# 123 is a Member at Level #1. * [/s2If] * [s2If user_can(123, access_s2member_level2)] * User ID# 123 has access to content protected at Level #2. * [/s2If] * ``` * *but please note, `else if()` logic is not possible with `[s2If /]`.* * * ———— Membership Levels Provide Incremental Access ———— * * o A Member with Level 4 access, will also be able to access Levels 0, 1, 2, 3. * o A Member with Level 3 access, will also be able to access Levels 0, 1, 2. * o A Member with Level 2 access, will also be able to access Levels 0, 1 * o A Member with Level 1 access, will also be able to access Level 0. * o A Subscriber with Level 0 access, can ONLY access Level 0. * o A public Visitor will have NO access to protected content. * * WordPress® Subscribers are at Membership Level 0. If you're allowing Open Registration, Subscribers will be at Level 0 *( a Free Subscriber )*. * WordPress® Administrators, Editors, Authors, and Contributors have Level 4 access, with respect to s2Member. * All of their other {@link http://codex.wordpress.org/Roles_and_Capabilities Roles/Capabilities} are left untouched. * * @package s2Member\API_Functions * @since 110524RC * * @param int|str $id A numeric WordPress® User ID. * @param str $role A WordPress® Role ID *( i.e. `s2member_level[0-9]+`, `administrator`, `editor`, `author`, `contributor`, `subscriber` )*. * @return bool True if the specific User is/has the specified Role, else false. * * @see s2Member\API_Functions\user_is() * @see s2Member\API_Functions\user_is_not() * * @see s2Member\API_Functions\current_user_is() * @see s2Member\API_Functions\current_user_is_not() * @see s2Member\API_Functions\current_user_is_for_blog() * @see s2Member\API_Functions\current_user_is_not_for_blog() * * @see s2Member\API_Functions\user_cannot() * @see s2Member\API_Functions\current_user_cannot() * @see s2Member\API_Functions\current_user_cannot_for_blog() * * @see http://codex.wordpress.org/Function_Reference/user_can user_can() * @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can() * @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog() */ if (!function_exists ("user_is")) { function user_is ($id = FALSE, $role = FALSE) { $role = ($role === "s2member_level0") ? "subscriber" : preg_replace ("/^access_/i", "", $role); /**/ if (($role === "super_administrator" || $role === "administrator") && is_multisite () && is_super_admin ($id)) return true; /* Return true, Super Admins are always considered an Admnistrator, for all Blogs. */ /**/ else if (is_multisite () && is_super_admin ($id)) /* Else return false for Super Admins here. */ return false; /* Super Admins can access all Capabilities, so the default handling would fail. */ /**/ return user_can ($id, $role); } } /** * Conditional to determine if a specific User is/does NOT have a specific Role. * * Another function {@link http://codex.wordpress.org/Function_Reference/user_can user_can()} already exists in the WordPress® core. * * ———— Code Sample Using Three Functions ———— * ``` * * ``` * ———— Shortcode Conditional Equivalent ———— * ``` * [s2If user_is(123, subscriber)] * User ID# 123 is a Free Subscriber at Level #0. * [/s2If] * [s2If user_is(123, s2member_level1)] * User ID# 123 is a Member at Level #1. * [/s2If] * [s2If user_can(123, access_s2member_level2) AND user_is_not(123, s2member_level2)] * User ID# 123 has access to content protected at Level #2, but they are NOT a Level #2 Member. * [/s2If] * ``` * *but please note, `else if()` logic is not possible with `[s2If /]`.* * * ———— Membership Levels Provide Incremental Access ———— * * o A Member with Level 4 access, will also be able to access Levels 0, 1, 2, 3. * o A Member with Level 3 access, will also be able to access Levels 0, 1, 2. * o A Member with Level 2 access, will also be able to access Levels 0, 1 * o A Member with Level 1 access, will also be able to access Level 0. * o A Subscriber with Level 0 access, can ONLY access Level 0. * o A public Visitor will have NO access to protected content. * * WordPress® Subscribers are at Membership Level 0. If you're allowing Open Registration, Subscribers will be at Level 0 *( a Free Subscriber )*. * WordPress® Administrators, Editors, Authors, and Contributors have Level 4 access, with respect to s2Member. * All of their other {@link http://codex.wordpress.org/Roles_and_Capabilities Roles/Capabilities} are left untouched. * * @package s2Member\API_Functions * @since 110524RC * * @param int|str $id A numeric WordPress® User ID. * @param str $role A WordPress® Role ID *( i.e. `s2member_level[0-9]+`, `administrator`, `editor`, `author`, `contributor`, `subscriber` )*. * @return bool True if the specific User is/does NOT have the specified Role, else false. * * @see s2Member\API_Functions\user_is() * @see s2Member\API_Functions\user_is_not() * * @see s2Member\API_Functions\current_user_is() * @see s2Member\API_Functions\current_user_is_not() * @see s2Member\API_Functions\current_user_is_for_blog() * @see s2Member\API_Functions\current_user_is_not_for_blog() * * @see s2Member\API_Functions\user_cannot() * @see s2Member\API_Functions\current_user_cannot() * @see s2Member\API_Functions\current_user_cannot_for_blog() * * @see http://codex.wordpress.org/Function_Reference/user_can user_can() * @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can() * @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog() */ if (!function_exists ("user_is_not")) { function user_is_not ($id = FALSE, $role = FALSE) { return (!user_is ($id, $role)); } } /** * Conditional to determine if the current User is/has a specific Role. * * Another function {@link http://codex.wordpress.org/Function_Reference/current_user_can current_user_can()} already exists in the WordPress® core. * * ———— Code Sample Using Both Functions ———— * ``` * * ``` * * ———— Shortcode Conditional Equivalent ———— * ``` * [s2If curent_user_is(subscriber)] * You ARE a Free Subscriber at Level #0. * [/s2If] * [s2If curent_user_is(s2member_level1)] * You ARE a Member at Level #1. * [/s2If] * [s2If current_user_can(access_s2member_level2)] * You DO have access to content protected at Level #2. * [/s2If] * ``` * *but please note, `else if()` logic is not possible with `[s2If /]`.* * * ———— Membership Levels Provide Incremental Access ———— * * o A Member with Level 4 access, will also be able to access Levels 0, 1, 2, 3. * o A Member with Level 3 access, will also be able to access Levels 0, 1, 2. * o A Member with Level 2 access, will also be able to access Levels 0, 1 * o A Member with Level 1 access, will also be able to access Level 0. * o A Subscriber with Level 0 access, can ONLY access Level 0. * o A public Visitor will have NO access to protected content. * * WordPress® Subscribers are at Membership Level 0. If you're allowing Open Registration, Subscribers will be at Level 0 *( a Free Subscriber )*. * WordPress® Administrators, Editors, Authors, and Contributors have Level 4 access, with respect to s2Member. * All of their other {@link http://codex.wordpress.org/Roles_and_Capabilities Roles/Capabilities} are left untouched. * * @package s2Member\API_Functions * @since 3.5 * * @param str $role A WordPress® Role ID *( i.e. `s2member_level[0-9]+`, `administrator`, `editor`, `author`, `contributor`, `subscriber` )*. * @return bool True if the current User is/has the specified Role, else false. * * @see s2Member\API_Functions\user_is() * @see s2Member\API_Functions\user_is_not() * * @see s2Member\API_Functions\current_user_is() * @see s2Member\API_Functions\current_user_is_not() * @see s2Member\API_Functions\current_user_is_for_blog() * @see s2Member\API_Functions\current_user_is_not_for_blog() * * @see s2Member\API_Functions\user_cannot() * @see s2Member\API_Functions\current_user_cannot() * @see s2Member\API_Functions\current_user_cannot_for_blog() * * @see http://codex.wordpress.org/Function_Reference/user_can user_can() * @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can() * @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog() */ if (!function_exists ("current_user_is")) { function current_user_is ($role = FALSE) { $role = ($role === "s2member_level0") ? "subscriber" : preg_replace ("/^access_/i", "", $role); /**/ if (($role === "super_administrator" || $role === "administrator") && is_multisite () && is_super_admin ()) return true; /* Return true, Super Admins are always considered an Admnistrator, for all Blogs. */ /**/ else if (is_multisite () && is_super_admin ()) /* Else return false for Super Admins here. */ return false; /* Super Admins can access all Capabilities, so the default handling would fail. */ /**/ return current_user_can ($role); } } /** * Conditional to determine if the current User is/does NOT have a specific Role. * * Another function {@link http://codex.wordpress.org/Function_Reference/current_user_can current_user_can()} already exists in the WordPress® core. * * ———— Code Sample Using Three Functions ———— * ``` * * ``` * ———— Shortcode Conditional Equivalent ———— * ``` * [s2If current_user_is(subscriber)] * You ARE a Free Subscriber at Level #0. * [/s2If] * [s2If current_user_is(s2member_level1)] * You ARE a Member at Level #1. * [/s2If] * [s2If current_user_can(access_s2member_level2) AND current_user_is_not(s2member_level2)] * You DO have access to content protected at Level #2, but you are NOT a Level #2 Member. * [/s2If] * ``` * *but please note, `else if()` logic is not possible with `[s2If /]`.* * * ———— Membership Levels Provide Incremental Access ———— * * o A Member with Level 4 access, will also be able to access Levels 0, 1, 2, 3. * o A Member with Level 3 access, will also be able to access Levels 0, 1, 2. * o A Member with Level 2 access, will also be able to access Levels 0, 1 * o A Member with Level 1 access, will also be able to access Level 0. * o A Subscriber with Level 0 access, can ONLY access Level 0. * o A public Visitor will have NO access to protected content. * * WordPress® Subscribers are at Membership Level 0. If you're allowing Open Registration, Subscribers will be at Level 0 *( a Free Subscriber )*. * WordPress® Administrators, Editors, Authors, and Contributors have Level 4 access, with respect to s2Member. * All of their other {@link http://codex.wordpress.org/Roles_and_Capabilities Roles/Capabilities} are left untouched. * * @package s2Member\API_Functions * @since 3.5 * * @param str $role A WordPress® Role ID *( i.e. `s2member_level[0-9]+`, `administrator`, `editor`, `author`, `contributor`, `subscriber` )*. * @return bool True if the current User is/does NOT have the specified Role, else false. * * @see s2Member\API_Functions\user_is() * @see s2Member\API_Functions\user_is_not() * * @see s2Member\API_Functions\current_user_is() * @see s2Member\API_Functions\current_user_is_not() * @see s2Member\API_Functions\current_user_is_for_blog() * @see s2Member\API_Functions\current_user_is_not_for_blog() * * @see s2Member\API_Functions\user_cannot() * @see s2Member\API_Functions\current_user_cannot() * @see s2Member\API_Functions\current_user_cannot_for_blog() * * @see http://codex.wordpress.org/Function_Reference/user_can user_can() * @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can() * @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog() */ if (!function_exists ("current_user_is_not")) { function current_user_is_not ($role = FALSE) { return (!current_user_is ($role)); } } /** * Conditional to determine if the current User is/has a specific Role, on a specific Blog within a Multisite Network. * * Another function {@link http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog()} already exists in the WordPress® core. * * ———— Code Sample Using Three Functions ———— * ``` * * ``` * ———— Shortcode Conditional Equivalent ———— * ``` * [s2If current_user_is(subscriber)] * You ARE a Free Subscriber at Level #0 ( on this Blog ). * [/s2If] * [s2If current_user_is_for_blog(5, subscriber)] * You ARE a Free Subscriber at Level #0 ( on Blog ID 5 ). * [/s2If] * [s2If current_user_is_for_blog(5, s2member_level1)] * You ARE a Member at Level #1 ( on Blog ID 5 ). * [/s2If] * [s2If current_user_can_for_blog(5, access_s2member_level2)] * You DO have access to content protected at Level #2 ( on Blog ID 5 ). * [/s2If] * ``` * *but please note, `else if()` logic is not possible with `[s2If /]`.* * * ———— Membership Levels Provide Incremental Access ———— * * o A Member with Level 4 access, will also be able to access Levels 0, 1, 2, 3. * o A Member with Level 3 access, will also be able to access Levels 0, 1, 2. * o A Member with Level 2 access, will also be able to access Levels 0, 1 * o A Member with Level 1 access, will also be able to access Level 0. * o A Subscriber with Level 0 access, can ONLY access Level 0. * o A public Visitor will have NO access to protected content. * * WordPress® Subscribers are at Membership Level 0. If you're allowing Open Registration, Subscribers will be at Level 0 *( a Free Subscriber )*. * WordPress® Administrators, Editors, Authors, and Contributors have Level 4 access, with respect to s2Member. * All of their other {@link http://codex.wordpress.org/Roles_and_Capabilities Roles/Capabilities} are left untouched. * * @package s2Member\API_Functions * @since 3.5 * * @param int|str $blog_id A WordPress® Blog ID *( must be numeric )*. * @param str $role A WordPress® Role ID *( i.e. `s2member_level[0-9]+`, `administrator`, `editor`, `author`, `contributor`, `subscriber` )*. * @return bool True if the current User is/has the specified Role, on the specified Blog, else false. * * @see s2Member\API_Functions\user_is() * @see s2Member\API_Functions\user_is_not() * * @see s2Member\API_Functions\current_user_is() * @see s2Member\API_Functions\current_user_is_not() * @see s2Member\API_Functions\current_user_is_for_blog() * @see s2Member\API_Functions\current_user_is_not_for_blog() * * @see s2Member\API_Functions\user_cannot() * @see s2Member\API_Functions\current_user_cannot() * @see s2Member\API_Functions\current_user_cannot_for_blog() * * @see http://codex.wordpress.org/Function_Reference/user_can user_can() * @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can() * @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog() */ if (!function_exists ("current_user_is_for_blog")) { function current_user_is_for_blog ($blog_id = FALSE, $role = FALSE) { $role = ($role === "s2member_level0") ? "subscriber" : preg_replace ("/^access_/i", "", $role); /**/ if (($role === "super_administrator" || $role === "administrator") && is_multisite () && is_super_admin ()) return true; /* Return true, Super Admins are always considered an Admnistrator, for all Blogs. */ /**/ else if (is_multisite () && is_super_admin ()) /* Else return false for Super Admins here. */ return false; /* Super Admins can access all Capabilities, so the default handling would fail. */ /**/ return current_user_can_for_blog ($blog_id, $role); } } /** * Conditional to determine if the current User is/does NOT have a specific Role, on a specific Blog within a Multisite Network. * * Another function {@link http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog()} already exists in the WordPress® core. * * ———— Code Sample Using Three Functions ———— * ``` * * ``` * ———— Shortcode Conditional Equivalent ———— * ``` * [s2If current_user_is_for_blog(5, subscriber)] * You ARE a Free Subscriber at Level #0 ( on Blog ID 5 ). * [/s2If] * [s2If current_user_can_for_blog(5, access_s2member_level1) AND current_user_is_not_for_blog(5, s2member_level1)] * You DO have access to content protected at Level #1 ( on Blog ID 5 ), but you are NOT a Level #1 Member ( on Blog ID 5 ). * [/s2If] * ``` * *but please note, `else if()` logic is not possible with `[s2If /]`.* * * ———— Membership Levels Provide Incremental Access ———— * * o A Member with Level 4 access, will also be able to access Levels 0, 1, 2, 3. * o A Member with Level 3 access, will also be able to access Levels 0, 1, 2. * o A Member with Level 2 access, will also be able to access Levels 0, 1 * o A Member with Level 1 access, will also be able to access Level 0. * o A Subscriber with Level 0 access, can ONLY access Level 0. * o A public Visitor will have NO access to protected content. * * WordPress® Subscribers are at Membership Level 0. If you're allowing Open Registration, Subscribers will be at Level 0 *( a Free Subscriber )*. * WordPress® Administrators, Editors, Authors, and Contributors have Level 4 access, with respect to s2Member. * All of their other {@link http://codex.wordpress.org/Roles_and_Capabilities Roles/Capabilities} are left untouched. * * @package s2Member\API_Functions * @since 3.5 * * @param int|str $blog_id A WordPress® Blog ID *( must be numeric )*. * @param str $role A WordPress® Role ID *( i.e. `s2member_level[0-9]+`, `administrator`, `editor`, `author`, `contributor`, `subscriber` )*. * @return bool True if the current User is/does NOT have the specified Role, on the specified Blog, else false. * * @see s2Member\API_Functions\user_is() * @see s2Member\API_Functions\user_is_not() * * @see s2Member\API_Functions\current_user_is() * @see s2Member\API_Functions\current_user_is_not() * @see s2Member\API_Functions\current_user_is_for_blog() * @see s2Member\API_Functions\current_user_is_not_for_blog() * * @see s2Member\API_Functions\user_cannot() * @see s2Member\API_Functions\current_user_cannot() * @see s2Member\API_Functions\current_user_cannot_for_blog() * * @see http://codex.wordpress.org/Function_Reference/user_can user_can() * @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can() * @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog() */ if (!function_exists ("current_user_is_not_for_blog")) { function current_user_is_not_for_blog ($blog_id = FALSE, $role = FALSE) { return (!current_user_is_for_blog ($blog_id, $role)); } } /** * Conditional to determine if a specific User does NOT have a specific Capability or Role. * * Another function {@link http://codex.wordpress.org/Function_Reference/user_can user_can()} already exists in the WordPress® core. * * ———— Code Sample Using Both Functions ———— * ``` * * ``` * ———— Shortcode Conditional Equivalent ———— * ``` * [s2If user_can(123, access_s2member_level0)] * User ID# 123 CAN access content protected at Level #0. * [/s2If] * [s2If user_cannot(123, access_s2member_level0)] * User ID# 123 CANNOT access content at Level #0. * [/s2If] * ``` * *but please note, `else if()` logic is not possible with `[s2If /]`.* * * ———— Membership Levels Provide Incremental Access ———— * * o A Member with Level 4 access, will also be able to access Levels 0, 1, 2, 3. * o A Member with Level 3 access, will also be able to access Levels 0, 1, 2. * o A Member with Level 2 access, will also be able to access Levels 0, 1 * o A Member with Level 1 access, will also be able to access Level 0. * o A Subscriber with Level 0 access, can ONLY access Level 0. * o A public Visitor will have NO access to protected content. * * WordPress® Subscribers are at Membership Level 0. If you're allowing Open Registration, Subscribers will be at Level 0 *( a Free Subscriber )*. * WordPress® Administrators, Editors, Authors, and Contributors have Level 4 access, with respect to s2Member. * All of their other {@link http://codex.wordpress.org/Roles_and_Capabilities Roles/Capabilities} are left untouched. * * @package s2Member\API_Functions * @since 3.5 * * @param int|str $id A numeric WordPress® User ID. * @param str $capability A WordPress® Capability ID *( i.e. `access_s2member_level[0-9]+`, `access_s2member_ccap_music` )*. * @return bool True if the specific User does NOT have the specified Capability or Role, else false. * * @see s2Member\API_Functions\user_is() * @see s2Member\API_Functions\user_is_not() * * @see s2Member\API_Functions\current_user_is() * @see s2Member\API_Functions\current_user_is_not() * @see s2Member\API_Functions\current_user_is_for_blog() * @see s2Member\API_Functions\current_user_is_not_for_blog() * * @see s2Member\API_Functions\user_cannot() * @see s2Member\API_Functions\current_user_cannot() * @see s2Member\API_Functions\current_user_cannot_for_blog() * * @see http://codex.wordpress.org/Function_Reference/user_can user_can() * @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can() * @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog() */ if (!function_exists ("user_cannot")) { function user_cannot ($id = FALSE, $capability = FALSE) { return (!user_can ($id, $capability)); } } /** * Conditional to determine if the current User does NOT have a specific Capability or Role. * * Another function {@link http://codex.wordpress.org/Function_Reference/current_user_can current_user_can()} already exists in the WordPress® core. * * ———— Code Sample Using Both Functions ———— * ``` * * ``` * ———— Shortcode Conditional Equivalent ———— * ``` * [s2If current_user_can(access_s2member_level0)] * You CAN access content protected at Level #0. * [/s2If] * [s2If current_user_cannot(access_s2member_level0)] * You CANNOT access content protected at Level #0. * [/s2If] * ``` * *but please note, `else if()` logic is not possible with `[s2If /]`.* * * ———— Membership Levels Provide Incremental Access ———— * * o A Member with Level 4 access, will also be able to access Levels 0, 1, 2, 3. * o A Member with Level 3 access, will also be able to access Levels 0, 1, 2. * o A Member with Level 2 access, will also be able to access Levels 0, 1 * o A Member with Level 1 access, will also be able to access Level 0. * o A Subscriber with Level 0 access, can ONLY access Level 0. * o A public Visitor will have NO access to protected content. * * WordPress® Subscribers are at Membership Level 0. If you're allowing Open Registration, Subscribers will be at Level 0 *( a Free Subscriber )*. * WordPress® Administrators, Editors, Authors, and Contributors have Level 4 access, with respect to s2Member. * All of their other {@link http://codex.wordpress.org/Roles_and_Capabilities Roles/Capabilities} are left untouched. * * @package s2Member\API_Functions * @since 3.5 * * @param str $capability A WordPress® Capability ID *( i.e. `access_s2member_level[0-9]+`, `access_s2member_ccap_music` )*. * Or a Role ID *( i.e. `s2member_level[0-9]+`, `administrator`, `editor`, `author`, `contributor`, `subscriber` )*. * @return bool True if the current User does NOT have the specified Capability or Role, else false. * * @see s2Member\API_Functions\user_is() * @see s2Member\API_Functions\user_is_not() * * @see s2Member\API_Functions\current_user_is() * @see s2Member\API_Functions\current_user_is_not() * @see s2Member\API_Functions\current_user_is_for_blog() * @see s2Member\API_Functions\current_user_is_not_for_blog() * * @see s2Member\API_Functions\user_cannot() * @see s2Member\API_Functions\current_user_cannot() * @see s2Member\API_Functions\current_user_cannot_for_blog() * * @see http://codex.wordpress.org/Function_Reference/user_can user_can() * @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can() * @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog() */ if (!function_exists ("current_user_cannot")) { function current_user_cannot ($capability = FALSE) { return (!current_user_can ($capability)); } } /** * Conditional to determine if the current User does NOT have a specific Capability or Role, on a specific Blog within a Multisite Network. * * Another function {@link http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog()} already exists in the WordPress® core. * * ———— Code Sample Using Both Functions ———— * ``` * * ``` * ———— Shortcode Conditional Equivalent ———— * ``` * [s2If current_user_can_for_blog(5, access_s2member_level0)] * You CAN access content protected at Level #0 ( on Blog ID 5 ). * [/s2If] * [s2If current_user_cannot_for_blog(5, access_s2member_level0)] * You CANNOT access content protected at Level #0 ( on Blog ID 5 ). * [/s2If] * ``` * *but please note, `else if()` logic is not possible with `[s2If /]`.* * * ———— Membership Levels Provide Incremental Access ———— * * o A Member with Level 4 access, will also be able to access Levels 0, 1, 2, 3. * o A Member with Level 3 access, will also be able to access Levels 0, 1, 2. * o A Member with Level 2 access, will also be able to access Levels 0, 1 * o A Member with Level 1 access, will also be able to access Level 0. * o A Subscriber with Level 0 access, can ONLY access Level 0. * o A public Visitor will have NO access to protected content. * * WordPress® Subscribers are at Membership Level 0. If you're allowing Open Registration, Subscribers will be at Level 0 *( a Free Subscriber )*. * WordPress® Administrators, Editors, Authors, and Contributors have Level 4 access, with respect to s2Member. * All of their other {@link http://codex.wordpress.org/Roles_and_Capabilities Roles/Capabilities} are left untouched. * * @package s2Member\API_Functions * @since 3.5 * * @param int|str $blog_id A WordPress® Blog ID *( must be numeric )*. * @param str $capability A WordPress® Capability ID *( i.e. `access_s2member_level[0-9]+`, `access_s2member_ccap_music` )*. * Or a Role ID *( i.e. `s2member_level[0-9]+`, `administrator`, `editor`, `author`, `contributor`, `subscriber` )*. * @return bool True if the current User does NOT have the specified Capability or Role, else false. * * @see s2Member\API_Functions\user_is() * @see s2Member\API_Functions\user_is_not() * * @see s2Member\API_Functions\current_user_is() * @see s2Member\API_Functions\current_user_is_not() * @see s2Member\API_Functions\current_user_is_for_blog() * @see s2Member\API_Functions\current_user_is_not_for_blog() * * @see s2Member\API_Functions\user_cannot() * @see s2Member\API_Functions\current_user_cannot() * @see s2Member\API_Functions\current_user_cannot_for_blog() * * @see http://codex.wordpress.org/Function_Reference/user_can user_can() * @see http://codex.wordpress.org/Function_Reference/current_user_can current_user_can() * @see http://codex.wordpress.org/Function_Reference/current_user_can_for_blog current_user_can_for_blog() */ if (!function_exists ("current_user_cannot_for_blog")) { function current_user_cannot_for_blog ($blog_id = FALSE, $capability = FALSE) { return (!current_user_can_for_blog ($blog_id, $capability)); } } /** * Conditional to determine if a specific Category, Tag, Post, Page, URL or URI is protected by s2Member; * without considering the current User's Role/Capabilites. * * ———— Extra Detail On Function Parameters ———— * * **Parameter $what ( int|str Optional ).** * Defaults to the current $post ID when called from within {@link http://codex.wordpress.org/The_Loop The Loop}. * If passed in, this should be a WordPress® Category ID, Tag ID, Post ID, or Page ID. Or a full URL. A URI is also fine. * * o If you pass in an ID, s2Member will check everything, including your configured URI Restrictions against the ID. * In other words, s2Member is capable of determining a URI based on the ID that you pass in. * So using an ID results in an all-inclusive scan against your configured Restrictions, * including any URI Restrictions that you may have configured. * * o If you pass in a URL or URI, s2Member will ONLY check URI Restrictions, because it has no ID to work with. * This is useful though. Some protected content is not associated with an ID. In those cases, URI Restrictions are all the matter. * * o Note: when passing in a URL or URI, the $type parameter must be set to `URI` or `uri`. Case insensitive. * * **Parameter $type ( str Optional ).** * One of `category`, `tag`, `post`, `page`, `singular` or `uri`. Defaults to `singular` *( i.e. a Post or Page )*. * * **Parameter $check_user ( bool Optional ).** * Consider the current User? Defaults to false. * * o In other words, by default, this Conditional function is only checking to see if the content is protected, and that's it. * o So this function does NOT consider the current User's Role or Capabilities. If you set $check_user to true, it will. * o When $check_user is true, this function behaves like {@link s2Member\API_Functions\is_permitted_by_s2member()}. * * ———— Code Sample Using Function Parameters ———— * ``` * * ``` * ———— Shortcode Conditional Equivalent ———— * ``` * [s2If is_protected_by_s2member(123)] * Post or Page ID #123 is protected by s2Member. * [/s2If] * [s2If is_protected_by_s2member(332, tag)] * Tag ID #332 is protected by s2Member. * [/s2If] * [s2If is_protected_by_s2member(554, category)] * Category ID #554 is protected by s2Member. * [/s2If] * [s2If is_protected_by_s2member(http://example.com/members/, uri)] * This URL is protected by URI Restrictions. * [/s2If] * [s2If is_protected_by_s2member(/members/, uri)] * This URI is protected by URI Restrictions. * [/s2If] * ``` * *but please note, `else if()` logic is not possible with `[s2If /]`.* * * @package s2Member\API_Functions * @since 3.5 * * @param int|str $what Optional. Defaults to the current $post ID when called from within {@link http://codex.wordpress.org/The_Loop The Loop}. * If passed in, this should be a WordPress® Category ID, Tag ID, Post ID, or Page ID. Or a full URL. A URI is also fine. * @param str $type Optional. One of `category`, `tag`, `post`, `page`, `singular` or `uri`. Defaults to `singular` *( i.e. a Post or Page )*. * @param bool $check_user Optional. Consider the current User? Defaults to false. * @return array|bool A non-empty array *( meaning true )*, or false if the content is not protected *( i.e. available publicly )*. * When/if content IS protected, the return array will include one of these keys ``["s2member_(level|sp|ccap)_req"]`` * indicating the Level #, Specific Post/Page ID #, or Custom Capability required to access the content. * In other words, the reason why it's protected; based on your s2Member configuration. * * @see s2Member\API_Functions\is_protected_by_s2member() * @see s2Member\API_Functions\is_permitted_by_s2member() * * @see s2Member\API_Functions\is_category_protected_by_s2member() * @see s2Member\API_Functions\is_category_permitted_by_s2member() * * @see s2Member\API_Functions\is_tag_protected_by_s2member() * @see s2Member\API_Functions\is_tag_permitted_by_s2member() * * @see s2Member\API_Functions\is_post_protected_by_s2member() * @see s2Member\API_Functions\is_post_permitted_by_s2member() * * @see s2Member\API_Functions\is_page_protected_by_s2member() * @see s2Member\API_Functions\is_page_permitted_by_s2member() * * @see s2Member\API_Functions\is_uri_protected_by_s2member() * @see s2Member\API_Functions\is_uri_permitted_by_s2member() * * @see s2Member\API_Functions\attach_s2member_query_filters() * @see s2Member\API_Functions\detach_s2member_query_filters() */ if (!function_exists ("is_protected_by_s2member")) { function is_protected_by_s2member ($what = FALSE, $type = FALSE, $check_user = FALSE) { global $post; /* Global reference to $post in The Loop. */ /**/ $what = ($what) ? $what : ((is_object ($post) && $post->ID) ? $post->ID : false); $type = ($type) ? strtolower ($type) : "singular"; /**/ if ($type === "category" && ($array = c_ws_plugin__s2member_catgs_sp::check_specific_catg_level_access ($what, $check_user))) return $array; /* A non-empty array with ["s2member_level_req"]. */ /**/ else if ($type === "tag" && ($array = c_ws_plugin__s2member_ptags_sp::check_specific_ptag_level_access ($what, $check_user))) return $array; /* A non-empty array with ["s2member_level_req"]. */ /**/ else if (($type === "post" || $type === "singular") && ($array = c_ws_plugin__s2member_posts_sp::check_specific_post_level_access ($what, $check_user))) return $array; /* A non-empty array with ["s2member_(level|sp|ccap)_req"]. */ /**/ else if (($type === "page" || $type === "singular") && ($array = c_ws_plugin__s2member_pages_sp::check_specific_page_level_access ($what, $check_user))) return $array; /* A non-empty array with ["s2member_(level|sp|ccap)_req"]. */ /**/ else if ($type === "uri" && ($array = c_ws_plugin__s2member_ruris_sp::check_specific_ruri_level_access ($what, $check_user))) return $array; /* A non-empty array with ["s2member_level_req"]. */ /**/ return false; } } /** * Conditional to determine if a specific Category, Tag, Post, Page, URL or URI is permitted by s2Member, * with consideration given to the current User's Role/Capabilites. * * This function is similar to {@link s2Member\API_Functions\is_protected_by_s2member()}, except this function considers the current User's Role/Capabilites. * Also, this function does NOT return the array like {@link s2Member\API_Functions\is_protected_by_s2member()} does; it only returns true|false. * * ———— Extra Detail On Function Parameters ———— * * **Parameter $what ( int|str Optional ).** * Defaults to the current $post ID when called from within {@link http://codex.wordpress.org/The_Loop The Loop}. * If passed in, this should be a WordPress® Category ID, Tag ID, Post ID, or Page ID. Or a full URL. A URI is also fine. * * o If you pass in an ID, s2Member will check everything, including your configured URI Restrictions against the ID. * In other words, s2Member is capable of determining a URI based on the ID that you pass in. * So using an ID results in an all-inclusive scan against your configured Restrictions, * including any URI Restrictions that you may have configured. * * o If you pass in a URL or URI, s2Member will ONLY check URI Restrictions, because it has no ID to work with. * This is useful though. Some protected content is not associated with an ID. In those cases, URI Restrictions are all the matter. * * o Note: when passing in a URL or URI, the $type parameter must be set to `URI` or `uri`. Case insensitive. * * **Parameter $type ( str Optional ).** * One of `category`, `tag`, `post`, `page`, `singular` or `uri`. Defaults to `singular` *( i.e. a Post or Page )*. * * ———— Code Sample Using Function Parameters ———— * ``` * * ``` * ———— Shortcode Conditional Equivalent ———— * ``` * [s2If is_permitted_by_s2member(123)] * Post or Page ID #123 is permitted by s2Member. * [/s2If] * [s2If is_permitted_by_s2member(332, tag)] * Tag ID #332 is permitted by s2Member. * [/s2If] * [s2If is_permitted_by_s2member(554, category)] * Category ID #554 is permitted by s2Member. * [/s2If] * [s2If is_permitted_by_s2member(http://example.com/members/, uri)] * This URL is permitted by s2Member. * [/s2If] * [s2If is_permitted_by_s2member(/members/, uri)] * This URI is permitted by s2Member. * [/s2If] * ``` * *but please note, `else if()` logic is not possible with `[s2If /]`.* * * @package s2Member\API_Functions * @since 3.5 * * @param int|str $what Optional. Defaults to the current $post ID when called from within {@link http://codex.wordpress.org/The_Loop The Loop}. * If passed in, this should be a WordPress® Category ID, Tag ID, Post ID, or Page ID. Or a full URL. A URI is also fine. * @param str $type Optional. One of `category`, `tag`, `post`, `page`, `singular` or `uri`. Defaults to `singular` *( i.e. a Post or Page )*. * @return bool True if the current User IS permitted, else false if the content is NOT available to the current User; * based on your configuration of s2Member, and based on the current User's Role/Capabilities. * * @see s2Member\API_Functions\is_protected_by_s2member() * @see s2Member\API_Functions\is_permitted_by_s2member() * * @see s2Member\API_Functions\is_category_protected_by_s2member() * @see s2Member\API_Functions\is_category_permitted_by_s2member() * * @see s2Member\API_Functions\is_tag_protected_by_s2member() * @see s2Member\API_Functions\is_tag_permitted_by_s2member() * * @see s2Member\API_Functions\is_post_protected_by_s2member() * @see s2Member\API_Functions\is_post_permitted_by_s2member() * * @see s2Member\API_Functions\is_page_protected_by_s2member() * @see s2Member\API_Functions\is_page_permitted_by_s2member() * * @see s2Member\API_Functions\is_uri_protected_by_s2member() * @see s2Member\API_Functions\is_uri_permitted_by_s2member() * * @see s2Member\API_Functions\attach_s2member_query_filters() * @see s2Member\API_Functions\detach_s2member_query_filters() */ if (!function_exists ("is_permitted_by_s2member")) { function is_permitted_by_s2member ($what = FALSE, $type = FALSE) { global $post; /* Global reference to $post in The Loop. */ /**/ $what = ($what) ? $what : ((is_object ($post) && $post->ID) ? $post->ID : false); $type = ($type) ? strtolower ($type) : "singular"; /**/ if ($type === "category" && c_ws_plugin__s2member_catgs_sp::check_specific_catg_level_access ($what, true)) return false; /**/ else if ($type === "tag" && c_ws_plugin__s2member_ptags_sp::check_specific_ptag_level_access ($what, true)) return false; /**/ else if (($type === "post" || $type === "singular") && c_ws_plugin__s2member_posts_sp::check_specific_post_level_access ($what, true)) return false; /**/ else if (($type === "page" || $type === "singular") && c_ws_plugin__s2member_pages_sp::check_specific_page_level_access ($what, true)) return false; /**/ else if ($type === "uri" && c_ws_plugin__s2member_ruris_sp::check_specific_ruri_level_access ($what, true)) return false; /**/ return true; } } /** * Conditional to determine if a specific Category is protected by s2Member; * without considering the current User's Role/Capabilites. * * ———— Extra Detail On Function Parameters ———— * * **Parameter $cat_id ( int Required ).** This should be a WordPress® Category ID. * * o s2Member will check everything, including your configured URI Restrictions against the ID. * In other words, s2Member is capable of determining a URI based on the ID that you pass in. * So using an ID results in an all-inclusive scan against your configured Restrictions, * including any URI Restrictions that you may have configured. * * **Parameter $check_user ( bool Optional ).** * Consider the current User? Defaults to false. * * o In other words, by default, this Conditional function is only checking to see if the Category is protected, and that's it. * o So this function does NOT consider the current User's Role or Capabilities. If you set $check_user to true, it will. * o When $check_user is true, this function behaves like {@link s2Member\API_Functions\is_category_permitted_by_s2member()}. * * ———— Code Sample Using Function Parameters ———— * ``` * * ``` * ———— Shortcode Conditional Equivalent ———— * ``` * [s2If is_category_protected_by_s2member(123)] * Category ID #123 is protected by s2Member. * [/s2If] * ``` * * @package s2Member\API_Functions * @since 3.5 * * @param int $cat_id Required. This should be a WordPress® Category ID. * @param bool $check_user Optional. Consider the current User? Defaults to false. * @return array|bool A non-empty array *( meaning true )*, or false if the Category is not protected *( i.e. available publicly )*. * When/if the Category IS protected, the return array will include one of these keys ``["s2member_(level|sp|ccap)_req"]`` * indicating the Level #, Specific Post/Page ID #, or Custom Capability required to access the Category. * In other words, the reason why it's protected; based on your s2Member configuration. * * @see s2Member\API_Functions\is_protected_by_s2member() * @see s2Member\API_Functions\is_permitted_by_s2member() * * @see s2Member\API_Functions\is_category_protected_by_s2member() * @see s2Member\API_Functions\is_category_permitted_by_s2member() * * @see s2Member\API_Functions\is_tag_protected_by_s2member() * @see s2Member\API_Functions\is_tag_permitted_by_s2member() * * @see s2Member\API_Functions\is_post_protected_by_s2member() * @see s2Member\API_Functions\is_post_permitted_by_s2member() * * @see s2Member\API_Functions\is_page_protected_by_s2member() * @see s2Member\API_Functions\is_page_permitted_by_s2member() * * @see s2Member\API_Functions\is_uri_protected_by_s2member() * @see s2Member\API_Functions\is_uri_permitted_by_s2member() * * @see s2Member\API_Functions\attach_s2member_query_filters() * @see s2Member\API_Functions\detach_s2member_query_filters() */ if (!function_exists ("is_category_protected_by_s2member")) { function is_category_protected_by_s2member ($cat_id = FALSE, $check_user = FALSE) { if ($cat_id && ($array = c_ws_plugin__s2member_catgs_sp::check_specific_catg_level_access ($cat_id, $check_user))) return $array; /* A non-empty array with ["s2member_level_req"]. */ /**/ return false; } } /** * Conditional to determine if a specific Category is permitted by s2Member, * with consideration given to the current User's Role/Capabilites. * * This function is similar to {@link s2Member\API_Functions\is_category_protected_by_s2member()}, except this function considers the current User's Role/Capabilites. * Also, this function does NOT return the array like {@link s2Member\API_Functions\is_category_protected_by_s2member()} does; it only returns true|false. * * ———— Extra Detail On Function Parameters ———— * * **Parameter $cat_id ( int Required ).** This should be a WordPress® Category ID. * * o s2Member will check everything, including your configured URI Restrictions against the ID. * In other words, s2Member is capable of determining a URI based on the ID that you pass in. * So using an ID results in an all-inclusive scan against your configured Restrictions, * including any URI Restrictions that you may have configured. * * ———— Code Sample Using Function Parameters ———— * ``` * * ``` * ———— Shortcode Conditional Equivalent ———— * ``` * [s2If is_category_permitted_by_s2member(123)] * Category ID #123 is permitted by s2Member. * [/s2If] * ``` * * @package s2Member\API_Functions * @since 3.5 * * @param int $cat_id Required. This should be a WordPress® Category ID. * @return bool True if the current User IS permitted, else false if the Category is NOT available to the current User; * based on your configuration of s2Member, and based on the current User's Role/Capabilities. * * @see s2Member\API_Functions\is_protected_by_s2member() * @see s2Member\API_Functions\is_permitted_by_s2member() * * @see s2Member\API_Functions\is_category_protected_by_s2member() * @see s2Member\API_Functions\is_category_permitted_by_s2member() * * @see s2Member\API_Functions\is_tag_protected_by_s2member() * @see s2Member\API_Functions\is_tag_permitted_by_s2member() * * @see s2Member\API_Functions\is_post_protected_by_s2member() * @see s2Member\API_Functions\is_post_permitted_by_s2member() * * @see s2Member\API_Functions\is_page_protected_by_s2member() * @see s2Member\API_Functions\is_page_permitted_by_s2member() * * @see s2Member\API_Functions\is_uri_protected_by_s2member() * @see s2Member\API_Functions\is_uri_permitted_by_s2member() * * @see s2Member\API_Functions\attach_s2member_query_filters() * @see s2Member\API_Functions\detach_s2member_query_filters() */ if (!function_exists ("is_category_permitted_by_s2member")) { function is_category_permitted_by_s2member ($cat_id = FALSE) { if ($cat_id && c_ws_plugin__s2member_catgs_sp::check_specific_catg_level_access ($cat_id, true)) return false; /**/ return true; } } /** * Conditional to determine if a specific Tag is protected by s2Member; * without considering the current User's Role/Capabilites. * * ———— Extra Detail On Function Parameters ———— * * **Parameter $tag_id_slug_or_name ( int|str Required ).** This should be a WordPress® Tag ID, Tag Slug, or Tag Name. * * o s2Member will check everything, including your configured URI Restrictions against the ID, Slug, or Name. * In other words, s2Member is capable of determining a URI based on the ID, or Slug, or Name that you pass in. * So using an ID, or Slug, or Name results in an all-inclusive scan against your configured Restrictions, * including any URI Restrictions that you may have configured. * * **Parameter $check_user ( bool Optional ).** * Consider the current User? Defaults to false. * * o In other words, by default, this Conditional function is only checking to see if the Tag is protected, and that's it. * o So this function does NOT consider the current User's Role or Capabilities. If you set $check_user to true, it will. * o When $check_user is true, this function behaves like {@link s2Member\API_Functions\is_tag_permitted_by_s2member()}. * * ———— Code Sample Using Function Parameters ———— * ``` * * ``` * ———— Shortcode Conditional Equivalent ———— * ``` * [s2If is_tag_protected_by_s2member(123)] * Tag ID #123 is protected by s2Member. * [/s2If] * [s2If is_tag_protected_by_s2member(members-only)] * Tag Slug (members-only) is protected by s2Member. * [/s2If] * NOTE: It's NOT possible to check a Tag Named "Members Only" with [s2If /], * because Shortcode Conditionals may NOT contain spaces in their argument values. * If you're using [s2If /] to check a Tag, please use the Slug or ID instead. * ``` * *but please note, `else if()` logic is not possible with `[s2If /]`.* * * @package s2Member\API_Functions * @since 3.5 * * @param int|str $tag_id_slug_or_name Required. This should be a WordPress® Tag ID, Tag Slug, or Tag Name. * @param bool $check_user Optional. Consider the current User? Defaults to false. * @return array|bool A non-empty array *( meaning true )*, or false if the Tag is not protected *( i.e. available publicly )*. * When/if the Tag IS protected, the return array will include one of these keys ``["s2member_(level|sp|ccap)_req"]`` * indicating the Level #, Specific Post/Page ID #, or Custom Capability required to access the Tag. * In other words, the reason why it's protected; based on your s2Member configuration. * * @see s2Member\API_Functions\is_protected_by_s2member() * @see s2Member\API_Functions\is_permitted_by_s2member() * * @see s2Member\API_Functions\is_category_protected_by_s2member() * @see s2Member\API_Functions\is_category_permitted_by_s2member() * * @see s2Member\API_Functions\is_tag_protected_by_s2member() * @see s2Member\API_Functions\is_tag_permitted_by_s2member() * * @see s2Member\API_Functions\is_post_protected_by_s2member() * @see s2Member\API_Functions\is_post_permitted_by_s2member() * * @see s2Member\API_Functions\is_page_protected_by_s2member() * @see s2Member\API_Functions\is_page_permitted_by_s2member() * * @see s2Member\API_Functions\is_uri_protected_by_s2member() * @see s2Member\API_Functions\is_uri_permitted_by_s2member() * * @see s2Member\API_Functions\attach_s2member_query_filters() * @see s2Member\API_Functions\detach_s2member_query_filters() */ if (!function_exists ("is_tag_protected_by_s2member")) { function is_tag_protected_by_s2member ($tag_id_slug_or_name = FALSE, $check_user = FALSE) { if ($tag_id_slug_or_name && ($array = c_ws_plugin__s2member_ptags_sp::check_specific_ptag_level_access ($tag_id_slug_or_name, $check_user))) return $array; /* A non-empty array with ["s2member_level_req"]. */ /**/ return false; } } /** * Conditional to determine if a specific Tag is permitted by s2Member, * with consideration given to the current User's Role/Capabilites. * * This function is similar to {@link s2Member\API_Functions\is_tag_protected_by_s2member()}, except this function considers the current User's Role/Capabilites. * Also, this function does NOT return the array like {@link s2Member\API_Functions\is_tag_protected_by_s2member()} does; it only returns true|false. * * ———— Extra Detail On Function Parameters ———— * * **Parameter $tag_id_slug_or_name ( int|str Required ).** This should be a WordPress® Tag ID, Tag Slug, or Tag Name. * * o s2Member will check everything, including your configured URI Restrictions against the ID, or Slug, or Name. * In other words, s2Member is capable of determining a URI based on the ID, or Slug, or Name that you pass in. * So using an ID, or Slug, or Name results in an all-inclusive scan against your configured Restrictions, * including any URI Restrictions that you may have configured. * * ———— Code Sample Using Function Parameters ———— * ``` * * ``` * ———— Shortcode Conditional Equivalent ———— * ``` * [s2If is_tag_permitted_by_s2member(123)] * Tag ID #123 is permitted by s2Member. * [/s2If] * [s2If is_tag_permitted_by_s2member(members-only)] * Tag Slug (members-only) is permitted by s2Member. * [/s2If] * NOTE: It's NOT possible to check a Tag Named "Members Only" with [s2If /], * because Shortcode Conditionals may NOT contain spaces in their argument values. * If you're using [s2If /] to check a Tag, please use the Slug or ID instead. * ``` * *but please note, `else if()` logic is not possible with `[s2If /]`.* * * @package s2Member\API_Functions * @since 3.5 * * @param int|str $tag_id_slug_or_name Required. This should be a WordPress® Tag ID, Tag Slug, or Tag Name. * @return bool True if the current User IS permitted, else false if the Tag is NOT available to the current User; * based on your configuration of s2Member, and based on the current User's Role/Capabilities. * * @see s2Member\API_Functions\is_protected_by_s2member() * @see s2Member\API_Functions\is_permitted_by_s2member() * * @see s2Member\API_Functions\is_category_protected_by_s2member() * @see s2Member\API_Functions\is_category_permitted_by_s2member() * * @see s2Member\API_Functions\is_tag_protected_by_s2member() * @see s2Member\API_Functions\is_tag_permitted_by_s2member() * * @see s2Member\API_Functions\is_post_protected_by_s2member() * @see s2Member\API_Functions\is_post_permitted_by_s2member() * * @see s2Member\API_Functions\is_page_protected_by_s2member() * @see s2Member\API_Functions\is_page_permitted_by_s2member() * * @see s2Member\API_Functions\is_uri_protected_by_s2member() * @see s2Member\API_Functions\is_uri_permitted_by_s2member() * * @see s2Member\API_Functions\attach_s2member_query_filters() * @see s2Member\API_Functions\detach_s2member_query_filters() */ if (!function_exists ("is_tag_permitted_by_s2member")) { function is_tag_permitted_by_s2member ($tag_id_slug_or_name = FALSE) { if ($tag_id_slug_or_name && c_ws_plugin__s2member_ptags_sp::check_specific_ptag_level_access ($tag_id_slug_or_name, true)) return false; /**/ return true; } } /** * Conditional to determine if a specific Post ( or Custom Post Type ) is protected by s2Member; * without considering the current User's Role/Capabilites. * * ———— Extra Detail On Function Parameters ———— * * **Parameter $post_id ( int Required ).** This should be a WordPress® Post ID, or a Custom Post Type ID. * * o s2Member will check everything, including your configured URI Restrictions against the ID. * In other words, s2Member is capable of determining a URI based on the ID that you pass in. * So using an ID results in an all-inclusive scan against your configured Restrictions, * including any URI Restrictions that you may have configured. * * **Parameter $check_user ( bool Optional ).** * Consider the current User? Defaults to false. * * o In other words, by default, this Conditional function is only checking to see if the Post is protected, and that's it. * o So this function does NOT consider the current User's Role or Capabilities. If you set $check_user to true, it will. * o When $check_user is true, this function behaves like {@link s2Member\API_Functions\is_post_permitted_by_s2member()}. * * ———— Code Sample Using Function Parameters ———— * ``` * * ``` * ———— Shortcode Conditional Equivalent ———— * ``` * [s2If is_post_protected_by_s2member(123)] * Post ID #123 is protected by s2Member. * [/s2If] * ``` * * @package s2Member\API_Functions * @since 3.5 * * @param int $post_id Required. This should be a WordPress® Post ID, or a Custom Post Type ID. * @param bool $check_user Optional. Consider the current User? Defaults to false. * @return array|bool A non-empty array *( meaning true )*, or false if the Post is not protected *( i.e. available publicly )*. * When/if the Post IS protected, the return array will include one of these keys ``["s2member_(level|sp|ccap)_req"]`` * indicating the Level #, Specific Post/Page ID #, or Custom Capability required to access the Post. * In other words, the reason why it's protected; based on your s2Member configuration. * * @see s2Member\API_Functions\is_protected_by_s2member() * @see s2Member\API_Functions\is_permitted_by_s2member() * * @see s2Member\API_Functions\is_category_protected_by_s2member() * @see s2Member\API_Functions\is_category_permitted_by_s2member() * * @see s2Member\API_Functions\is_tag_protected_by_s2member() * @see s2Member\API_Functions\is_tag_permitted_by_s2member() * * @see s2Member\API_Functions\is_post_protected_by_s2member() * @see s2Member\API_Functions\is_post_permitted_by_s2member() * * @see s2Member\API_Functions\is_page_protected_by_s2member() * @see s2Member\API_Functions\is_page_permitted_by_s2member() * * @see s2Member\API_Functions\is_uri_protected_by_s2member() * @see s2Member\API_Functions\is_uri_permitted_by_s2member() * * @see s2Member\API_Functions\attach_s2member_query_filters() * @see s2Member\API_Functions\detach_s2member_query_filters() */ if (!function_exists ("is_post_protected_by_s2member")) { function is_post_protected_by_s2member ($post_id = FALSE, $check_user = FALSE) { if ($post_id && ($array = c_ws_plugin__s2member_posts_sp::check_specific_post_level_access ($post_id, $check_user))) return $array; /* A non-empty array with ["s2member_(level|sp|ccap)_req"]. */ /**/ return false; } } /** * Conditional to determine if a specific Post or Custom Post Type is permitted by s2Member, * with consideration given to the current User's Role/Capabilites. * * This function is similar to {@link s2Member\API_Functions\is_post_protected_by_s2member()}, except this function considers the current User's Role/Capabilites. * Also, this function does NOT return the array like {@link s2Member\API_Functions\is_post_protected_by_s2member()} does; it only returns true|false. * * ———— Extra Detail On Function Parameters ———— * * **Parameter $post_id ( int Required ).** This should be a WordPress® Post ID, or a Custom Post Type ID. * * o s2Member will check everything, including your configured URI Restrictions against the ID. * In other words, s2Member is capable of determining a URI based on the ID that you pass in. * So using an ID results in an all-inclusive scan against your configured Restrictions, * including any URI Restrictions that you may have configured. * * ———— Code Sample Using Function Parameters ———— * ``` * * ``` * ———— Shortcode Conditional Equivalent ———— * ``` * [s2If is_post_permitted_by_s2member(123)] * Post ID #123 is permitted by s2Member. * [/s2If] * ``` * * @package s2Member\API_Functions * @since 3.5 * * @param int $post_id Required. This should be a WordPress® Post ID, or a Custom Post Type ID. * @return bool True if the current User IS permitted, else false if the Post is NOT available to the current User; * based on your configuration of s2Member, and based on the current User's Role/Capabilities. * * @see s2Member\API_Functions\is_protected_by_s2member() * @see s2Member\API_Functions\is_permitted_by_s2member() * * @see s2Member\API_Functions\is_category_protected_by_s2member() * @see s2Member\API_Functions\is_category_permitted_by_s2member() * * @see s2Member\API_Functions\is_tag_protected_by_s2member() * @see s2Member\API_Functions\is_tag_permitted_by_s2member() * * @see s2Member\API_Functions\is_post_protected_by_s2member() * @see s2Member\API_Functions\is_post_permitted_by_s2member() * * @see s2Member\API_Functions\is_page_protected_by_s2member() * @see s2Member\API_Functions\is_page_permitted_by_s2member() * * @see s2Member\API_Functions\is_uri_protected_by_s2member() * @see s2Member\API_Functions\is_uri_permitted_by_s2member() * * @see s2Member\API_Functions\attach_s2member_query_filters() * @see s2Member\API_Functions\detach_s2member_query_filters() */ if (!function_exists ("is_post_permitted_by_s2member")) { function is_post_permitted_by_s2member ($post_id = FALSE) { if ($post_id && c_ws_plugin__s2member_posts_sp::check_specific_post_level_access ($post_id, true)) return false; /**/ return true; } } /** * Conditional to determine if a specific Page is protected by s2Member; * without considering the current User's Role/Capabilites. * * ———— Extra Detail On Function Parameters ———— * * **Parameter $page_id ( int Required ).** This should be a WordPress® Page ID. * * o s2Member will check everything, including your configured URI Restrictions against the ID. * In other words, s2Member is capable of determining a URI based on the ID that you pass in. * So using an ID results in an all-inclusive scan against your configured Restrictions, * including any URI Restrictions that you may have configured. * * **Parameter $check_user ( bool Optional ).** * Consider the current User? Defaults to false. * * o In other words, by default, this Conditional function is only checking to see if the Page is protected, and that's it. * o So this function does NOT consider the current User's Role or Capabilities. If you set $check_user to true, it will. * o When $check_user is true, this function behaves like {@link s2Member\API_Functions\is_page_permitted_by_s2member()}. * * ———— Code Sample Using Function Parameters ———— * ``` * * ``` * ———— Shortcode Conditional Equivalent ———— * ``` * [s2If is_page_protected_by_s2member(123)] * Page ID #123 is protected by s2Member. * [/s2If] * ``` * * @package s2Member\API_Functions * @since 3.5 * * @param int $page_id Required. This should be a WordPress® Page ID. * @param bool $check_user Optional. Consider the current User? Defaults to false. * @return array|bool A non-empty array *( meaning true )*, or false if the Page is not protected *( i.e. available publicly )*. * When/if the Page IS protected, the return array will include one of these keys ``["s2member_(level|sp|ccap)_req"]`` * indicating the Level #, Specific Post/Page ID #, or Custom Capability required to access the Page. * In other words, the reason why it's protected; based on your s2Member configuration. * * @see s2Member\API_Functions\is_protected_by_s2member() * @see s2Member\API_Functions\is_permitted_by_s2member() * * @see s2Member\API_Functions\is_category_protected_by_s2member() * @see s2Member\API_Functions\is_category_permitted_by_s2member() * * @see s2Member\API_Functions\is_tag_protected_by_s2member() * @see s2Member\API_Functions\is_tag_permitted_by_s2member() * * @see s2Member\API_Functions\is_post_protected_by_s2member() * @see s2Member\API_Functions\is_post_permitted_by_s2member() * * @see s2Member\API_Functions\is_page_protected_by_s2member() * @see s2Member\API_Functions\is_page_permitted_by_s2member() * * @see s2Member\API_Functions\is_uri_protected_by_s2member() * @see s2Member\API_Functions\is_uri_permitted_by_s2member() * * @see s2Member\API_Functions\attach_s2member_query_filters() * @see s2Member\API_Functions\detach_s2member_query_filters() */ if (!function_exists ("is_page_protected_by_s2member")) { function is_page_protected_by_s2member ($page_id = FALSE, $check_user = FALSE) { if ($page_id && ($array = c_ws_plugin__s2member_pages_sp::check_specific_page_level_access ($page_id, $check_user))) return $array; /* A non-empty array with ["s2member_(level|sp|ccap)_req"]. */ /**/ return false; } } /** * Conditional to determine if a specific Page is permitted by s2Member, * with consideration given to the current User's Role/Capabilites. * * This function is similar to {@link s2Member\API_Functions\is_page_protected_by_s2member()}, except this function considers the current User's Role/Capabilites. * Also, this function does NOT return the array like {@link s2Member\API_Functions\is_page_protected_by_s2member()} does; it only returns true|false. * * ———— Extra Detail On Function Parameters ———— * * **Parameter $page_id ( int Required ).** This should be a WordPress® Page ID. * * o s2Member will check everything, including your configured URI Restrictions against the ID. * In other words, s2Member is capable of determining a URI based on the ID that you pass in. * So using an ID results in an all-inclusive scan against your configured Restrictions, * including any URI Restrictions that you may have configured. * * ———— Code Sample Using Function Parameters ———— * ``` * * ``` * ———— Shortcode Conditional Equivalent ———— * ``` * [s2If is_page_permitted_by_s2member(123)] * Page ID #123 is permitted by s2Member. * [/s2If] * ``` * * @package s2Member\API_Functions * @since 3.5 * * @param int $page_id Required. This should be a WordPress® Page ID. * @return bool True if the current User IS permitted, else false if the Page is NOT available to the current User; * based on your configuration of s2Member, and based on the current User's Role/Capabilities. * * @see s2Member\API_Functions\is_protected_by_s2member() * @see s2Member\API_Functions\is_permitted_by_s2member() * * @see s2Member\API_Functions\is_category_protected_by_s2member() * @see s2Member\API_Functions\is_category_permitted_by_s2member() * * @see s2Member\API_Functions\is_tag_protected_by_s2member() * @see s2Member\API_Functions\is_tag_permitted_by_s2member() * * @see s2Member\API_Functions\is_post_protected_by_s2member() * @see s2Member\API_Functions\is_post_permitted_by_s2member() * * @see s2Member\API_Functions\is_page_protected_by_s2member() * @see s2Member\API_Functions\is_page_permitted_by_s2member() * * @see s2Member\API_Functions\is_uri_protected_by_s2member() * @see s2Member\API_Functions\is_uri_permitted_by_s2member() * * @see s2Member\API_Functions\attach_s2member_query_filters() * @see s2Member\API_Functions\detach_s2member_query_filters() */ if (!function_exists ("is_page_permitted_by_s2member")) { function is_page_permitted_by_s2member ($page_id = FALSE) { if ($page_id && c_ws_plugin__s2member_pages_sp::check_specific_page_level_access ($page_id, true)) return false; /**/ return true; } } /** * Conditional to determine if a specific URI or URL is protected by s2Member; * without considering the current User's Role/Capabilites. * * ———— Extra Detail On Function Parameters ———— * * **Parameter $uri_or_full_url ( str Required ).** This should be a URI starting with `/`, or a full URL is also fine. * * **Parameter $check_user ( bool Optional ).** * Consider the current User? Defaults to false. * * o In other words, by default, this Conditional function is only checking to see if the URI or URL is protected, and that's it. * o So this function does NOT consider the current User's Role or Capabilities. If you set $check_user to true, it will. * o When $check_user is true, this function behaves like {@link s2Member\API_Functions\is_uri_permitted_by_s2member()}. * * ———— Important Notes About This Function ———— * * This function will ONLY test against URI Restrictions you've configured with s2Member. * If you need an all-inclusive test, please use {@link s2Member\API_Functions\is_protected_by_s2member()} with an ID. * * ———— Code Sample Using Function Parameters ———— * ``` * * ``` * ———— Shortcode Conditional Equivalent ———— * ``` * [s2If is_uri_protected_by_s2member(/members-only/sub-section)] * The URI (/members-only/sub-section) is protected by URI Restrictions. * [/s2If] * [s2If is_uri_protected_by_s2member(http://example.com/members-only/sub-section)] * The URL (http://example.com/members-only/sub-section) is protected by URI Restrictions. * [/s2If] * ``` * *but please note, `else if()` logic is not possible with `[s2If /]`.* * * @package s2Member\API_Functions * @since 3.5 * * @param str $uri_or_full_url Required. This should be a URI starting with `/`, or a full URL is also fine. * @param bool $check_user Optional. Consider the current User? Defaults to false. * @return array|bool A non-empty array *( meaning true )*, or false if the URI or URL is not protected *( i.e. available publicly )*. * When/if the URI or URL IS protected, the return array will include one of these keys ``["s2member_(level|sp|ccap)_req"]`` * indicating the Level #, Specific Post/Page ID #, or Custom Capability required to access the URI or URL. * In other words, the reason why it's protected; based on your s2Member configuration. * * @see s2Member\API_Functions\is_protected_by_s2member() * @see s2Member\API_Functions\is_permitted_by_s2member() * * @see s2Member\API_Functions\is_category_protected_by_s2member() * @see s2Member\API_Functions\is_category_permitted_by_s2member() * * @see s2Member\API_Functions\is_tag_protected_by_s2member() * @see s2Member\API_Functions\is_tag_permitted_by_s2member() * * @see s2Member\API_Functions\is_post_protected_by_s2member() * @see s2Member\API_Functions\is_post_permitted_by_s2member() * * @see s2Member\API_Functions\is_page_protected_by_s2member() * @see s2Member\API_Functions\is_page_permitted_by_s2member() * * @see s2Member\API_Functions\is_uri_protected_by_s2member() * @see s2Member\API_Functions\is_uri_permitted_by_s2member() * * @see s2Member\API_Functions\attach_s2member_query_filters() * @see s2Member\API_Functions\detach_s2member_query_filters() */ if (!function_exists ("is_uri_protected_by_s2member")) { function is_uri_protected_by_s2member ($uri_or_full_url = FALSE, $check_user = FALSE) { if ($uri_or_full_url && ($array = c_ws_plugin__s2member_ruris_sp::check_specific_ruri_level_access ($uri_or_full_url, $check_user))) return $array; /* A non-empty array with ["s2member_level_req"]. */ /**/ return false; } } /** * Conditional to determine if a specific URI or URL is permitted by s2Member, * with consideration given to the current User's Role/Capabilites. * * This function is similar to {@link s2Member\API_Functions\is_uri_protected_by_s2member()}, except this function considers the current User's Role/Capabilites. * Also, this function does NOT return the array like {@link s2Member\API_Functions\is_uri_protected_by_s2member()} does; it only returns true|false. * * ———— Extra Detail On Function Parameters ———— * * **Parameter $uri_or_full_url ( str Required ).** This should be a URI starting with `/`, or a full URL is also fine. * * ———— Important Notes About This Function ———— * * This function will ONLY test against URI Restrictions you've configured with s2Member. * If you need an all-inclusive test, please use {@link s2Member\API_Functions\is_permitted_by_s2member()} with an ID. * * ———— Code Sample Using Function Parameters ———— * ``` * * ``` * ———— Shortcode Conditional Equivalent ———— * ``` * [s2If is_uri_permitted_by_s2member(/members-only/sub-section)] * The URI (/members-only/sub-section) is permitted by URI Restrictions. * [/s2If] * [s2If is_uri_permitted_by_s2member(http://example.com/members-only/sub-section)] * The URL (http://example.com/members-only/sub-section) is permitted by URI Restrictions. * [/s2If] * ``` * *but please note, `else if()` logic is not possible with `[s2If /]`.* * * @package s2Member\API_Functions * @since 3.5 * * @param str $uri_or_full_url Required. This should be a URI starting with `/`, or a full URL is also fine. * @return bool True if the current User IS permitted, else false if the URI or URL is NOT available to the current User; * based on your configuration of s2Member, and based on the current User's Role/Capabilities. * * @see s2Member\API_Functions\is_protected_by_s2member() * @see s2Member\API_Functions\is_permitted_by_s2member() * * @see s2Member\API_Functions\is_category_protected_by_s2member() * @see s2Member\API_Functions\is_category_permitted_by_s2member() * * @see s2Member\API_Functions\is_tag_protected_by_s2member() * @see s2Member\API_Functions\is_tag_permitted_by_s2member() * * @see s2Member\API_Functions\is_post_protected_by_s2member() * @see s2Member\API_Functions\is_post_permitted_by_s2member() * * @see s2Member\API_Functions\is_page_protected_by_s2member() * @see s2Member\API_Functions\is_page_permitted_by_s2member() * * @see s2Member\API_Functions\is_uri_protected_by_s2member() * @see s2Member\API_Functions\is_uri_permitted_by_s2member() * * @see s2Member\API_Functions\attach_s2member_query_filters() * @see s2Member\API_Functions\detach_s2member_query_filters() */ if (!function_exists ("is_uri_permitted_by_s2member")) { function is_uri_permitted_by_s2member ($uri_or_full_url = FALSE) { if ($uri_or_full_url && c_ws_plugin__s2member_ruris_sp::check_specific_ruri_level_access ($uri_or_full_url, true)) return false; /**/ return true; } } /** * Allows plugin/theme developers to pre-filter WP Queries easily, so that protected content * *( i.e content NOT available to the current User )*, is excluded automatically. * * This functionality is already built right into s2Member's UI configuration panels, * but in cases where a plugin/theme developer needs more control, this may come in handy. * In the UI configuration for s2Member, please see: `Alternative View Protection`. * * ———— Code Sample Using s2Member's Query Filters ———— * ``` * * ``` * ———— Shortcode Equivalent ———— * ``` * There is NO Shortcode equivalent for this. * ``` * * @package s2Member\API_Functions * @since 3.5 * * @return null * * @see s2Member\API_Functions\detach_s2member_query_filters() */ if (!function_exists ("attach_s2member_query_filters")) { function attach_s2member_query_filters () { remove_action ("pre_get_posts", "c_ws_plugin__s2member_security::security_gate_query", 20); add_action ("pre_get_posts", "c_ws_plugin__s2member_querys::force_query_level_access", 20); } } /** * Allows plugin/theme developers to pre-filter WP Queries easily, so that protected content * *( i.e content NOT available to the current User )*, is excluded automatically. * * This functionality is already built right into s2Member's UI configuration panels, * but in cases where a plugin/theme developer needs more control, this may come in handy. * In the UI configuration for s2Member, please see: `Alternative View Protection`. * * ———— Code Sample Using s2Member's Query Filters ———— * ``` * * ``` * ———— Shortcode Equivalent ———— * ``` * There is NO Shortcode equivalent for this. * ``` * * @package s2Member\API_Functions * @since 3.5 * * @return null * * @see s2Member\API_Functions\attach_s2member_query_filters() */ if (!function_exists ("detach_s2member_query_filters")) { function detach_s2member_query_filters () { remove_action ("pre_get_posts", "c_ws_plugin__s2member_querys::force_query_level_access", 20); add_action ("pre_get_posts", "c_ws_plugin__s2member_security::security_gate_query", 20); } } /** * Generates a File Download Key that provides access to a File protected by s2Member. * * By default, s2Member uses your Basic Download Restrictions. For more information on this, * please check your Dashboard under: `s2Member -> Download Options -> Basic Download Restrictions`. * * ———— Advanced Download Restrictions ———— * * Or, you can also force s2Member to allow File Downloads, using an extra query string parameter `s2member_file_download_key`. * A File Download Key is passed through this parameter; it tells s2Member to allow the download of this particular file, * regardless of Membership Level; and WITHOUT checking any Basic Restrictions, that you may, or may not, have configured. * * ———— Code Sample Using A Download Key ———— * ``` * ">Download Now * ``` * ———— Shortcode Equivalent ———— * ``` * There is NO Shortcode equivalent for this ( yet ). * ``` * * This API Funtion produces a time-sensitive File Download Key that is unique to each and every visitor. * Each Key it produces *( at the time it is produced )*, will be valid for the current day, and only for a specific IP address and User-Agent string; * as detected by s2Member. This makes it possible for you to create links on your site, which provide access to protected File Downloads; * without having to worry about one visitor sharing their link with another. * * When `/?s2member_file_download_key` = `a valid Key` generated by this function, it works independently from Member Level Access. * That is, a visitor does NOT have to be logged in to receive access; they just need a valid Key. * Using this advanced technique, you could extend s2Member's file protection routines, * or even combine them with Specific Post/Page Access, and more. * The possibilities are limitless really. * * @package s2Member\API_Functions * @since 3.5 * * @param str $file Location of the protected File, relative to the `/s2member-files/` directory. * @param str|bool $directive Optional. Defaults to false. If you set this to any non-zero value ( i.e. the string `universal` ), * the resulting Key will be universal *( i.e. valid for any User, at any time, from any browser )*. That is to say; universal, for this particular File. * It is also possible to pass in the $directive string `ip-forever`, making the Key last forever, but only for a specific IP address. * @return str The File Download Key. Which is an MD5 hash *( always 32 characters )*, URL-safe. * * @todo Create a Shortcode equivalent. * @todo Allow custom expiration times. */ if (!function_exists ("s2member_file_download_key")) { function s2member_file_download_key ($file = FALSE, $directive = FALSE) { return c_ws_plugin__s2member_files::file_download_key ($file, $directive); } } /** * Obtains the Registration Time for the current User, and/or for a particular User. * * The Registration Time, is the time at which the Username was created for the account, that's it. * There's nothing special about this. This simply returns a {@link http://en.wikipedia.org/wiki/Unix_time Unix Timestamp}. * * ———— Code Sample Using Function Parameters ———— * ``` * * ``` * ———— Shortcode Equivalent ———— * ``` * There is NO Shortcode equivalent for this ( yet ). * ``` * * @package s2Member\API_Functions * @since 3.5 * * @param int $user_id Optional. Defaults to the current User's ID. * @return int A {@link http://en.wikipedia.org/wiki/Unix_time Unix Timestamp}. * The Registration Time, is the time at which the Username was created for the account, that's it. * * @see s2Member\API_Functions\get_user_field() * * @todo Create a Shortcode equivalent. */ if (!function_exists ("s2member_registration_time")) { function s2member_registration_time ($user_id = FALSE) { return c_ws_plugin__s2member_registration_times::registration_time ($user_id); } } /** * Retrieves a Paid Registration Time for the current User, and/or for a particular User. * * **NOTE** A Paid Registration Time, is NOT necessarily related specifically to a Payment. * s2Member records a Paid Registration Time, anytime a User acquires paid Membership Level Access. * * In other words, if you create a new User inside your Dashboard at a Membership Level greater than Level #0, * s2Member will record a Paid Registration Time immediately, because Membership Levels > 0, are reserved for paying Members. * s2Member monitors changes to all User accounts, and records the first Paid Registration Time for each Member, at each paid Membership Level. * So, s2Member stores the first Time a Member reaches each Level of paid access; and s2Member does NOT care if they *actually* paid, or not. * * ———— Code Sample Using Function Parameters ———— * ``` * * ``` * ———— Shortcode Equivalent ———— * ``` * There is NO Shortcode equivalent for this ( yet ). * ``` * * @package s2Member\API_Functions * @since 3.5 * * @param str $level Optional. Defaults to the first/initial Paid Registration Time, regardless of Level#. * @param int $user_id Optional. Defaults to the current User's ID. * @return int A {@link http://en.wikipedia.org/wiki/Unix_time Unix Timestamp}. * * @see s2Member\API_Functions\get_user_field() * * @todo Create a Shortcode equivalent. */ if (!function_exists ("s2member_paid_registration_time")) { function s2member_paid_registration_time ($level = FALSE, $user_id = FALSE) { return c_ws_plugin__s2member_registration_times::paid_registration_time ($level, $user_id); } } /** * A powerful function that can retrieve almost anything * you need to know about the current User, and/or a particular User. * * Scans all properties of the {@link http://codex.wordpress.org/Function_Reference/wp_get_current_user WP_User object}. * It defaults to the current User, but can also be used to obtain information about a particular User, by passing in a specific User ID. * * It can be used to retrieve basic information like `first_name`, `last_name`, `user_email`, `user_login`. * It can also be used to retrieve User Meta/Options, Role/Capabilities, and even supports * Custom Registration Fields configured with s2Member and many other plugins. * * ———— Here Are A Few Examples ———— * ``` * * ``` * ———— Shortcode Equivalents ———— * ``` * [s2Get user_field="user_login" /] # Username for the current User. * [s2Get user_field="user_email" /] # Email Address for the current User. * [s2Get user_field="first_name" /] # First Name for the current User. * [s2Get user_field="last_name" /] # Last Name for the current User. * [s2Get user_field="full_name" /] # First and Last Name for the current User. * [s2Get user_field="display_name" /] # Display Name for the current User. * ``` * ———— More Examples With s2Member Fields ———— * ``` * * ``` * ———— Practical Shortcode Equivalents ———— * ``` * [s2Get user_field="s2member_custom" /] # Custom String value for the current User. * [s2Get user_field="s2member_subscr_id" /] # Paid Subscr. ID for the current User. * [s2Get user_field="s2member_subscr_or_wp_id" /] # Paid Subscr. ID, else WordPress® User ID. * [s2Get user_field="s2member_subscr_gateway" /] # Paid Subscr. Gateway Code for the current User. * [s2Get user_field="s2member_registration_ip" /] # IP Address the current User had during registration. * [s2Get user_field="s2member_access_role" /] # A WordPress® Role ID ( i.e. s2member_level[0-9]+, administrator, editor, author, contributor, subscriber ). * [s2Get user_field="s2member_access_level" /] # An s2Member Membership Access Level number. * [s2Get user_field="s2member_access_label" /] # An s2Member Membership Access Label ( i.e. Bronze, Gold, Silver, Platinum, or whatever is configured ). * [s2Get user_field="s2member_login_counter" /] # Number of times the User has logged into your site. * ``` * ———— Pulling Data From Your Own Custom Fields ———— * ``` * * ``` * ———— Shortcode Equivalent ———— * ``` * [s2Get user_field="my_field_id" /] # The Unique Field ID you configured with s2Member. * ``` * ———— Pulling Data For A Particular User ID ———— * ``` * * ``` * ———— Shortcode Equivalents ———— * ``` * [s2Get user_field="user_login" user_id="123" /] # Username for the User with ID #123. * [s2Get user_field="user_email" user_id="123" /] # Email Address for the User with ID #123. * [s2Get user_field="first_name" user_id="123" /] # First Name for the User with ID #123. * [s2Get user_field="last_name" user_id="123" /] # Last Name for the User with ID #123. * [s2Get user_field="full_name" user_id="123" /] # First and Last Name for the User with ID #123. * [s2Get user_field="display_name" user_id="123" /] # Display Name for the User with ID #123. * ``` * ———— Finding A User ID, Based On Username ———— * ``` * ID; * !> * ``` * ———— Finding A Username, Based On User ID ———— * ``` * user_login; * # Or you could just use this alternate method. * $user_login = get_user_field ("user_login", 123); * !> * ``` * * ———— Alternative Using ``get_user_option()`` Native To WordPress® ———— * Most of the s2Member fields are stored in the `usermeta` table ( a WordPress® standard ), * so they could also be retrieved with {@link http://codex.wordpress.org/Function_Reference/get_user_option get_user_option()} if you prefer, * which is already native to WordPress®. That being said, {@link s2Member\API_Functions\get_user_field()} is provided by s2Member as a way to retrieve *almost anything*. * ``` * * ``` * ———— Practical Shortcode Equivalents ———— * ``` * [s2Get user_option="s2member_custom" /] # Custom String value for the current User. * [s2Get user_option="s2member_subscr_id" /] # Paid Subscr. ID for the current User. * [s2Get user_option="s2member_subscr_gateway" /] # Paid Subscr. Gateway Code for the current User. * [s2Get user_option="s2member_registration_ip" /] # IP the current User had during registration. * [s2Get user_option="s2member_login_counter" /] # Number of times the User has logged in. * ``` * * @package s2Member\API_Functions * @since 3.5 * * @param str $field_id Required. A unique Custom Registration Field ID, that you configured with s2Member. * Or, this could be set to any property that exists on the WP_User object for a particular User; * ( i.e. `id`, `ID`, `user_login`, `user_email`, `first_name`, `last_name`, `display_name`, `ip`, `IP`, * `s2member_registration_ip`, `s2member_custom`, `s2member_subscr_id`, `s2member_subscr_or_wp_id`, * `s2member_subscr_gateway`, `s2member_custom_fields`, `s2member_file_download_access_log`, * `s2member_auto_eot_time`, `s2member_last_payment_time`, `s2member_paid_registration_times`, * `s2member_access_role`, `s2member_access_level`, `s2member_access_label`, * `s2member_access_ccaps`, `s2member_login_counter`, etc, etc. ). * @param int $user_id Optional. Defaults to the current User's ID. * @return mixed The value of the requested field, or false if the field does not exist. * * @see s2Member\API_Functions\s2member_registration_time() * @see s2Member\API_Functions\s2member_paid_registration_time() * * @see http://codex.wordpress.org/Function_Reference/get_user_option get_user_option() * @see http://codex.wordpress.org/Function_Reference/update_user_option update_user_option() * @see http://codex.wordpress.org/Function_Reference/wp_get_current_user wp_get_current_user() */ if (!function_exists ("get_user_field")) { function get_user_field ($field_id = FALSE, $user_id = FALSE) { return c_ws_plugin__s2member_utils_users::get_user_field ($field_id, $user_id); } } /** * Can be used to auto-fill the `invoice` for PayPal® Button Codes, with a unique Code~IP combination. * * ———— PHP Code Sample ———— * ``` * * ``` * ———— Shortcode & JavaScript Equivalents ———— * ``` * [s2Get constant="S2MEMBER_VALUE_FOR_PP_INV" /] * * * ``` * * @package s2Member\API_Functions * @since 110720 * * @return str A unique Invoice. * * @see s2Member\API_Constants\S2MEMBER_VALUE_FOR_PP_INV * * @todo Create a true Shortcode equivalent function. */ if (!function_exists ("S2MEMBER_VALUE_FOR_PP_INV")) { function S2MEMBER_VALUE_FOR_PP_INV () { return uniqid () . "~" . $_SERVER["REMOTE_ADDR"]; } } ?>