Experiencing an error
-
Love the plugin… but experiencing a weird error. Got it all ready to go in a widget on the front page, I click on it and the pop-up appears, but when I enter any credentials – good or bad – it just hangs forever at “Checking credentials” and never actually logs in. However, if I just close the window while it’s hanging and refresh the page, it refreshes with the user logged in. Tried multiple browsers – same result.
-
For reference, my changes to s2Member were:
The first step was changing the logic from hooking into wp_login to filtering the login_redirect. Since s2Member removes all filters on login_redirect, I also had to modify login-redirects-r.inc.php to add the filter back after all others are removed.
The altered login_redirect function in login-redirects.inc.php:
public static function login_redirect ($redirect,$request,$user) { foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v; do_action ("ws_plugin__s2member_before_login_redirect", get_defined_vars ()); unset /* Unset defined __refs, __v. */ ($__refs, $__v); $username = $user->user_login; if (is_string($username) && $username && is_object ($user) && !empty ($user->ID) && ($user_id = $user->ID)) { update_user_option ($user_id, "s2member_last_login_time", time()); if /* Have we got this yet? */ (!get_user_option ("s2member_registration_ip", $user_id)) update_user_option ($user_id, "s2member_registration_ip", $_SERVER["REMOTE_ADDR"]); if (($logins = (int)get_user_option ("s2member_login_counter", $user_id) + 1) >= 1 || ($logins = 1)) update_user_option ($user_id, "s2member_login_counter", $logins); if /* Nag em? */ ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_password"]) delete_user_setting ("default_password_nag") . update_user_option ($user_id, "default_password_nag", false, true); $disable_login_ip_restrictions = apply_filters ("ws_plugin__s2member_disable_login_ip_restrictions", false, get_defined_vars ()); if (($ok = true) && !is_super_admin ($user_id) && $username !== "demo" && !$disable_login_ip_restrictions) $ok = c_ws_plugin__s2member_ip_restrictions::ip_restrictions_ok ($_SERVER["REMOTE_ADDR"], $username); if (($redirect = apply_filters ("ws_plugin__s2member_login_redirect", (($user->has_cap ("edit_posts")) ? false : true), get_defined_vars ()))) { $obey_redirect_to = apply_filters ("ws_plugin__s2member_obey_login_redirect_to", /* By default, we obey this. */ true, get_defined_vars ()); if (!$obey_redirect_to || empty ($_REQUEST["redirect_to"]) || !is_string ($_REQUEST["redirect_to"]) || $_REQUEST["redirect_to"] === admin_url () || preg_match ("/^\/?wp-admin\/?$/", $_REQUEST["redirect_to"])) { foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v; do_action ("ws_plugin__s2member_during_login_redirect", get_defined_vars ()); unset /* Unset defined __refs, __v. */ ($__refs, $__v); if /* Is this a string? */ ($redirect && is_string ($redirect)) return /* Dynamic URL introduced by a Filter? */ ($redirect); else if ($redirection_url = c_ws_plugin__s2member_login_redirects::login_redirection_url ($user)) return /* Special Redirection URL configured with s2Member. */ ($redirection_url); else // Else we use the Login Welcome Page configured for s2Member. return (get_page_link ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_welcome_page"])); exit /* Clean exit. */ (); } } } foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v; do_action ("ws_plugin__s2member_after_login_redirect", get_defined_vars ()); unset /* Unset defined __refs, __v. */ ($__refs, $__v); return /* Return for uniformity. */; }My altered filter in hooks.php (replaces the add_action(‘wp_login’)):
add_filter("login_redirect", "c_ws_plugin__s2member_login_redirects::login_redirect", 20, 3);My altered remove_login_redirect_filters in login-redirects-r.inc.php:
public static function remove_login_redirect_filters () { //if(defined ("DOING_AJAX") || DOING_AJAX) return; do_action ("ws_plugin__s2member_before_remove_login_redirect_filters", get_defined_vars ()); if (!apply_filters ("ws_plugin__s2member_allow_other_login_redirect_filters", false, get_defined_vars ())) { remove_all_filters /* Removes all <code>login_redirect</code> Filters. */("login_redirect"); add_filter ("login_redirect", "c_ws_plugin__s2member_login_redirects_r::_empty_login_redirect_filter"); add_filter("login_redirect", "c_ws_plugin__s2member_login_redirects::login_redirect", 20, 3); do_action ("ws_plugin__s2member_during_remove_login_redirect_filters", get_defined_vars ()); } do_action ("ws_plugin__s2member_after_remove_login_redirect_filters", get_defined_vars ()); return /* Return for uniformity. */; }I realize that filtering the login_redirect twice may be redundant, but I will leave that decision up to s2Member’s team.
The summary of my changes are:
- Changing the use of wp_login hook to login_redirect filter.
- Altering the login_redirect function of s2Member to return the url instead of redirecting to it.
- Re-adding the filter after all filters are removed by remove_login_redirect_filters.
The topic ‘Experiencing an error’ is closed to new replies.