Peter’s Login Redirect – WordPress plugin Free download
Peter’s Login Redirect
Description
Define a set of redirect rules for specific users, users with specific roles, users with specific capabilities, and a blanket rule for all other users. Also, set a redirect URL for post-registration. This is all managed in Settings > Login/logout redirects.
You can use the syntax [variable]username[/variable] in your URLs so that the system will build a dynamic URL upon each login, replacing that text with the user’s username. In addition to username, there is “userslug”, “homeurl”, “siteurl”, “postid-23”, “http_referer” and you can also add your own custom URL “variables”. See Other Notes / How to Extend for documentation.
If you’re using a plugin such as Gigya that bypasses the regular WordPress login redirect process (and only allows one fixed redirect URL), set that plugin to redirect to wp-content/plugins/peters-login-redirect/wplogin_redirect_control.php and set the relevant setting to “Yes” at the bottom of the Settings > Login/Logout redirects page in the WordPress admin panel.
You can add your own code logic before and between any of the plugin’s normal redirect checks if needed. See Other Notes / How to Extend for documentation. Some examples include: redirecting the user based on their IP address; and redirect users to a special page on first login.
This plugin also includes a function rul_register
that acts the same as the wp_register
function you see in templates (typically producing the Register or Site Admin links in the sidebar), except that it will return the custom defined admin address. rul_register
takes three parameters: the “before” code (by default “<li>”), the “after” code (by default “</li>”), and whether to echo or return the result (default is true
and thus echo).
Translations
nl_NL translation by Anja of http://www.werkgroepen.net/wordpress/plugins/peters-login-redirect/
sk_SK translation by Michal Miksik of http://moonpixel.com/michal-miksik/
ro_RO translation by Anunturi Jibo of http://www.jibo.ro
cs_CZ translation by Petr Mašek and Michal Kuk
de_DE translation by Lara of http://www.u-center.nl and Mario
es_ES translation by Closemarketing of http://www.closemarketing.es
lt_LT translation by Vincent G of http://www.host1free.com
da_DK translation by Tom of http://artikelforlaget.dk
id_ID translation by Syamsul Alam of http://www.syamsulalam.net/
uk translation by Yura
sr_RS translation by Borisa Djuraskovic of http://www.webhostinghub.com/
fr_FR translation by DomBonj
pt_BR translation by Graal4
ru_RU translation by Sergey
How to Extend
Custom redirect rules
You can write your own code logic before any of this plugin’s checks for user-specific, role-specific, and capability-specific redirects, as well as before the fallback redirect URL.
Available filters are:
rul_before_user
rul_before_role
rul_before_capability
rul_before_fallback
Each takes the same 4 parameters:
$custom_redirect_to: This is set as false in case you don’t have any redirect URL to set. Return this instead of false in case you have multiple filters running.
$redirect_to: Set by WordPress, usually the admin URL.
$requested_redirect_to: Set by WordPress, usually an override set in a GET parameter.
$user: A PHP object representing the current user.
Your return value in your own code logic should be the URL to redirect to, or $custom_redirect_to to continue the plugin’s normal checks.
An example of plugin code to redirect users on first login. See http://www.theblog.ca/wordpress-redirect-first-login for standalone functionality:
// Send new users to a special page
function redirectOnFirstLogin( $custom_redirect_to, $redirect_to, $requested_redirect_to, $user )
{
// URL to redirect to
$redirect_url = 'http://yoursite.com/firstloginpage';
// How many times to redirect the user
$num_redirects = 1;
// If implementing this on an existing site, this is here so that existing users don't suddenly get the "first login" treatment
// On a new site, you might remove this setting and the associated check
// Alternative approach: run a script to assign the "already redirected" property to all existing users
// Alternative approach: use a date-based check so that all registered users before a certain date are ignored
// 172800 seconds = 48 hours
$message_period = 172800;
/*
Cookie-based solution: captures users who registered within the last n hours
The reason to set it as "last n hours" is so that if a user clears their cookies or logs in with a different browser,
they don't get this same redirect treatment long after they're already a registered user
*/
/*
$key_name = 'redirect_on_first_login_' . $user->ID;
if( strtotime( $user->user_registered ) > ( time() - $message_period )
&& ( !isset( $_COOKIE[$key_name] ) || intval( $_COOKIE[$key_name] ) < $num_redirects )
)
{
if( isset( $_COOKIE[$key_name] ) )
{
$num_redirects = intval( $_COOKIE[$key_name] ) + 1;
}
setcookie( $key_name, $num_redirects, time() + $message_period, COOKIEPATH, COOKIE_DOMAIN );
return $redirect_url;
}
*/
/*
User meta value-based solution, stored in the database
*/
$key_name = 'redirect_on_first_login';
// Third parameter ensures that the result is a string
$current_redirect_value = get_user_meta( $user->ID, $key_name, true );
if( strtotime( $user->user_registered ) > ( time() - $message_period )
&& ( '' == $current_redirect_value || intval( $current_redirect_value ) < $num_redirects )
)
{
if( '' != $current_redirect_value )
{
$num_redirects = intval( $current_redirect_value ) + 1;
}
update_user_meta( $user->ID, $key_name, $num_redirects );
return $redirect_url;
}
else
{
return $custom_redirect_to;
}
}
add_filter( 'rul_before_user', 'redirectOnFirstLogin', 10, 4 );
An example of plugin code to redirect to a specific URL for only a specific IP range as the first redirect check:
function redirect
This is a very well conceptualised plug-in that helped us out of a whole we dug for ourselves with a custom membership website.
Thank you to the developer for building it and also keeping it maintained
Iain