在WordPress登录后重定向

我正在基于现有站点创建自定义WordPress主题。
我想使用我创建的备用仪表板。
登录后如何将用户定向到” news.php” 而不是” / wp-admin /” ?

编辑:为此有一个有效的插件, 但是对于任何可以找到通过functions.php进行手动操作的人, 赏金仍然可用, 因为与使用第三方插件相比, 它会更安全。
#1这应该可以解决你的问题。改编自此处找到的答案。
在你的主题的functions.php文件中添加以下代码片段:

function admin_default_page() { return '/new-dashboard-url'; }add_filter('login_redirect', 'admin_default_page');

#2公认的答案是非常错误的。永远不要修改WordPress核心。在给定的更新中, 不仅编辑会丢失, 你一时兴起的某些更改可能会损害其他功能, 甚至危及站点的安全。
动作挂钩和过滤器包含在内核中, 以允许在不修改代码的情况下修改功能。
在此处可以找到使用login_redirect过滤器重定向某些用户的示例, 它是解决你的问题的更可靠的解决方案。
对于你的特定问题, 你想这样做:
function login_redirect( $redirect_to, $request, $user ){ return home_url('news.php'); } add_filter( 'login_redirect', 'login_redirect', 10, 3 );

#3这可能会有所帮助。彼得的登录重定向
登录和注销后, 将用户重定向到其他位置。为特定用户, 具有特定角色的用户, 具有特定功能的用户以及所有其他用户的覆盖规则定义一组重定向规则。另外, 设置用于后注册的重定向URL。全部在” 设置” > ” 登录/注销” 重定向中进行管理。你可以在URL中使用语法[variable] username [/ variable], 以便系统在每次登录时都会构建一个动态URL, 用用户的用户名替换该文本。除了用户名之外, 还有” userslug” , ” homeurl” , ” siteurl” , ” postid-23″ , ” http_referer” , 你还可以添加自己的自定义URL” 变量” …
#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 } }

或者, 如果你只想重定向其他用户:
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主题我的登录插件可能会有所帮助-它允许你将具有特定角色的用户重定向到特定页面。
#6如果你使用的是php 5.3+, 则可以使用匿名函数, 如下所示:
add_filter( 'login_redirect', function() { return site_url('news'); } );

#7请尝试此操作, 它适用于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; }

#8你还可以将自定义链接用作:
https://example.com/wp-login.php?redirect_to=https://example.com/news.php

#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
// 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`}

#11接受的答案显然不是一个好的答案!它可能会暂时解决你的问题, 但是下次你更新WordPress安装会发生什么?你的核心文件可能会被覆盖, 你将丢失所有修改。
正如其他人已经提到的(Dan和Travis的答案), 正确的答案是使用login_redirect过滤器。
#12要在成功登录后进行全局重定向, 请在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="http://www.srcmini.com/< ?php echo esc_attr($redirect_to); ?>" />

并替换< ?php echo esc_attr($ redirect_to); ?> 与你要重定向的URL。该URL必须以http://开头, 并在/ other明智的页面上结束, 重定向到默认位置。
在同一文件中但在< form name =” registerform” > 部分下注册后, 执行相同的表单重定向。
#13functions.php文件与登录重定向没有任何关系, 你应该考虑的是wp-login.php文件, 你实际上可以从此处更改整个登录界面, 并强制用户重定向到你的自定义页面而不是/ wp-admin /目录。
如果使用Windows或任何文本编辑器, 请使用记事本打开文件, 按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();

【在WordPress登录后重定向】或者, 你可以使用” 注册登录插件” http://wordpress.org/extend/plugins/registration-login/, 只需简单地编辑重定向URL以及登录后要重定向到的位置的链接, 你就可以你有自己的自定义配置文件。

    推荐阅读