Thank you for your inquiry.
This is possible, but it requires custom code. You can use the information here with the ws_plugin__s2member_disable_specific_ip_restriction filter to do this:
Knowledge Base » Hacking s2Member® Via Hooks/Filters
s2Member passes 2 parameters through this filter. The first is a boolean (TRUE or FALSE) value that you can change to TRUE to prevent s2Member from firing the IP restriction and the other is an array of all of the variables that s2Member has at the point where it’s calling on the filter.
You can take a look at the variables that are set at this point in this file:
/s2member/includes/classes/ip-restrictions.inc.php
s2Member has a variable then called $restriction
that can be a Username. You’ll want to check if that’s the case, and if it is then the IP Restriction is for when a User is logging in. You can find the User’s level through their Username and decide whether or not to disable IP Restrictions for that User. Here is some example code:
<?php
add_filter('ws_plugin__s2member_disable_specific_ip_restriction', 's2hack_disable_certain_ip_restrictions', 10, 2);
function s2hack_disable_certain_ip_restrictions ($bool, $vars) {
if(username_exists($vars['restriction'])) { // Check if this is a Username
$user = new WP_User($vars['restriction']); // This is now a WordPress User Object
if($user->has_cap('access_s2member_level1')) // If User is s2Member Level 1 or higher, don't run IP Restrictions
return true;
}
return false; // If the User doesn't match the needed specifics, then we run IP Restrictions
}
Let me know if you have any further questions. :-)