// Remove some arguments that may be present and shouldn't be $http_referer = remove_query_arg(array('instance', 'action', 'checkemail', 'error', 'loggedout', 'registered', 'redirect_to', 'updated', 'key', '_wpnonce'), $http_referer); // Make sure $user object exists and is a WP_User instance if (!is_wp_error($user) && is_a($user, 'WP_User')) { if (is_multisite() && empty($user->roles)) { $user->roles = array('subscriber'); } $user_role = reset($user->roles); $redirection = $this->get_option($user_role, array()); if ('referer' == $redirection['logout_type']) { // Send 'em back to the referer $redirect_to = $http_referer; } elseif ('custom' == $redirection['logout_type']) { // Send 'em to the specified URL $redirect_to = $redirection['logout_url']; // Allow a few user specific variables $redirect_to = Theme_My_Login_Common::replace_vars($redirect_to, $user->ID, array('%user_id%' => $user->ID)); } } // Make sure $redirect_to isn't empty or pointing to an admin URL (causing an endless loop) if (empty($redirect_to) || false !== strpos($redirect_to, 'wp-admin')) { $redirect_to = add_query_arg('loggedout', 'true', wp_login_url()); } return $redirect_to; } } Theme_My_Login_Custom_Redirection::get_object(); } if (is_admin()) { include_once dirname(__FILE__) . '/admin/custom-redirection-admin.php'; }
/** * Returns default options * * @since 6.3 * @access public */ public static function default_options() { return Theme_My_Login_Custom_Redirection::default_options(); }