我正在基于现有网站创建自定义的WordPress主题。
我想使用我创建的备用仪表板。
如何在登录后将用户定向到'news.php
'而不是'/wp-admin/
'?
--
编辑:有一个工作插件,但对于任何能通过functions.php找到手动方式的人仍然可以获得赏金,因为它比使用第三方插件更安全。
这应该可以解决您的问题。改编自here.的答案
function admin_default_page() {
return '/new-dashboard-url';
}
add_filter('login_redirect', 'admin_default_page');
// 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`}
您还可以使用自定义链接:
https://example.com/wp-login.php?redirect_to=https://example.com/news.php
接受的答案显然不是一个好的答案!它可能会暂时解决您的问题,但下次更新WordPress安装时会发生什么?您的核心文件可能会被覆盖,您将失去所有修改。
正如其他人已经说过的那样(Dan和Travis回答),正确答案是使用login_redirect
过滤器。
functions.php文件与登录重定向没有任何关系,您应该考虑的是wp-login.php文件,您实际上可以从那里更改整个登录界面,并强制用户重定向到您的自定义页面而不是/ wp-admin /目录。
如果使用Windows或任何文本编辑器,请使用记事本打开文件,Prese Ctrl + F(在窗口中)查找“wp-admin /”并将其更改为您希望在登录后重定向到的文件夹,仍然在同一文件上按Ctrl + F,找到“admin_url”并更改文件名,默认文件名有“profile.php”...只需保存并试一试。
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();
或者你可以使用“注册登录插件”http://wordpress.org/extend/plugins/registration-login/,只需简单地编辑重定向网址和登录后你想要它重定向的链接,你就拥有了自己的自定义配置文件。
接受的答案是非常错误的。永远不应该修改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
登录和注销后,将用户重定向到不同的位置。
为特定用户,具有特定角色的用户,具有特定功能的用户以及针对所有其他用户的总括性规则定义一组重定向规则。另外,为注册后设置重定向URL。这些都在“设置”>“登录/注销”重定向中进行管理。
您可以在URL中使用语法
[variable]username[/variable]
,以便系统在每次登录时构建动态URL,并使用用户的用户名替换该文本。除了用户名,还有“userslug”,“homeurl”,“siteurl”,“postid-23”,“http_referer”,您还可以添加自己的自定义URL“变量”...
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'); } );
请尝试这个,它适用于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;
}
// 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
} }
要在成功登录后进行全局重定向,请在wp-login.php下的部分中找到此代码。
<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); ?>" />
并将<?php echo esc_attr($redirect_to); ?>
替换为您要重定向的URL。 URL必须以http://开头,并以/其他明智页面重定向到默认位置结束。
注册后在同一个文件中但在<form name="registerform">
部分下进行相同的重定向。