问题描述
我正在根据现有网站创建一个定制的 WordPress 主题。
我想使用我创建的备用仪表板。
登录后如何将用户定向到 「news.php
」,而不是 「/wp-admin/
」?
–
编辑:为此工作有一个工作的 Plug-in,但是对于任何可以通过 functions.php 找到手动方式的人仍然可以使用赏金,因为使用第三方 plug-in 将更安全。
最佳解决思路
这应该可以解决你的问题。改编自 here. 的答案
function admin_default_page() {
return '/new-dashboard-url';
}
add_filter('login_redirect', 'admin_default_page');
次佳解决思路
接受的答案是非常错误的。不应该修改 WordPress 核心。不仅会在给定的更新中丢失编辑内容,而且您所做的一些更改可能会损害其他功能,甚至危及您网站的安全。
Action Hooks & Filters 包含在核心中,以允许修改功能而不修改代码。
使用 login_redirect
过滤器重定向某些用户的示例可以找到 here,并且是您的问题更加强大的解决方案。
对于您的具体问题,您要这样做:
function login_redirect( $redirect_to, $request, $user ){
return home_url('news.php');
}
add_filter( 'login_redirect', 'login_redirect', 10, 3 );
第三种解决思路
这可能有帮助。 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”…
第四种思路
add_action('wp_head','redirect_admin');
function redirect_admin(){
if(is_admin()){
wp_redirect(WP_HOME.'/news.php');
die; // You have to die here
}
}
或者如果您只想重定向其他用户:
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
}
}
第五种思路
Theme My Login 插件可能有帮助 – 它允许您将特定角色的用户重定向到特定页面。
第六种思路
如果您有 php 5.3+,您可以使用如下所示的匿名函数:
add_filter( 'login_redirect', function() { return site_url('news'); } );
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。