可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I'm creating a customized wordpress theme based on an existing site.
I want to use an alternate dashboard which I have created.
How can I have the user directed to 'news.php
' after login instead of '/wp-admin/
' ?
--
EDIT: Have a working Plug-in for this but the bounty is still availible for anyone who can find a manual way to do this through functions.php, as it would be more secure then using a 3rd party plug-in.
回答1:
This should solve your problem. Adapted from an answer found here.
function admin_default_page() {
return '/new-dashboard-url';
}
add_filter('login_redirect', 'admin_default_page');
回答2:
The accepted answer is very wrong. One should never be modifying the WordPress Core. Not only will edits be lost at a given update, some changes you make on a whim may compromise other functionality or even endanger the security of your site.
Action Hooks & Filters are included within the core to allow modifying functionality without modifying code.
An example of using the login_redirect
filter to redirect certain users can be found here and is a much more robust solution to your problem.
For your specific problem, you want to do this:
function login_redirect( $redirect_to, $request, $user ){
return home_url('news.php');
}
add_filter( 'login_redirect', 'login_redirect', 10, 3 );
回答3:
This may help. Peter's Login Redirect
Redirect users to different locations after logging in and logging out.
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"...
回答4:
add_action('wp_head','redirect_admin');
function redirect_admin(){
if(is_admin()){
wp_redirect(WP_HOME.'/news.php');
die; // You have to die here
}
}
Or if you only want to redirect other users:
add_action('wp_head','redirect_admin');
function redirect_admin(){
if(is_admin()&&!current_user_can('level_10')){
wp_redirect(WP_HOME.'/news.php');
die; // You have to die here
}
}
回答5:
The Theme My Login plugin may help - it allows you to redirect users of specific roles to specific pages.
回答6:
If you have php 5.3+, you can use an anonymous function like so:
add_filter( 'login_redirect', function() { return site_url('news'); } );
回答7:
The accepted answer is clearly not a good answer! It may solve your problem for a while, but what will happen next time you update your wordpress installation?
Your core files may get overridden and you will loose all your modifications.
As already stated by others (Dan and Travis answers), the correct answer is to use the login_redirect
filter.
回答8:
Please try this, it works for any redirection on wordpress
add_filter('woocommerce_login_redirect', 'wc_login_redirect');
function wc_login_redirect( $redirect_to ) {
$redirect_to = 'PUT HERE URL OF THE PAGE';
return $redirect_to;
}
回答9:
// Used theme's functions.php
add_action('login_form', 'redirect_after_login');
function redirect_after_login()
{
global $redirect_to;
if (!isset($_GET['redirect_to']))
{
$redirect_to = get_option('sample-page');
// sample-page = your page name after site_url
} }
回答10:
To globally redirect after successful login, find this code in wp-login.php, under section.
<form name="loginform" id="loginform" action="<?php echo esc_url( site_url( 'wp-login.php', 'login_post' ) ); ?>" method="post">
<input type="hidden" name="redirect_to" value="<?php echo esc_attr($redirect_to); ?>" />
and replace <?php echo esc_attr($redirect_to); ?>
with your URL where you want to redirect. The URL must start with http:// and ends on /other wise page redirect to default location.
Do same thing form redirect after registration with in same file but under <form name="registerform">
section.
回答11:
// add the code to your theme function.php
//for logout redirection
add_action('wp_logout','auto_redirect_after_logout');
function auto_redirect_after_logout(){
wp_redirect( home_url() );
exit();
}
//for login redirection
add_action('wp_login','auto_redirect_after_login');
function auto_redirect_after_login(){
wp_redirect( home_url() );
exit();
`enter code here`}
回答12:
The functions.php file doesn't have anything to do with login redirect, what you should be considering it's the wp-login.php file, you can actually change the entire login interface from there, and force users to redirect to your custom pages instead of the /wp-admin/ directory.
Open the file with Notepad if using Windows or any text editor, Prese Ctrl + F (on window)
Find "wp-admin/" and change it to the folder you want it to redirect to after login, still on the same file Press Ctrl + F, find "admin_url" and the change the file name, the default file name there is "profile.php"...after just save and give a try.
if ( !$user->has_cap('edit_posts') && ( empty( $redirect_to ) || $redirect_to == 'wp-admin/' || $redirect_to == admin_url() ) )
$redirect_to = admin_url('profile.php');
wp_safe_redirect($redirect_to);
exit();
Or you can use the "registration-login plugin" http://wordpress.org/extend/plugins/registration-login/, just simple edit the redirect urls and the links to where you want it to redirect after login, and you've got your very own custom profile.