在WordPress上login后redirect

我正在创build一个基于现有网站的定制wordpress主题。

我想使用我创build的备用仪表板。

如何让用户在login后直接转到“ news.php ”而不是“ /wp-admin/ ”?

编辑: 有一个工作插件为此,但赏金仍然可用任何人都可以find一个手动的方式来做到这一点,通过functions.php,因为它会更安全,然后使用第三方插件。

这应该可以解决你的问题。 从这里find答案。

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

接受的答案是非常错误的。 永远不要修改WordPress的核心。 在给定的更新中,编辑不仅会丢失,而且您随时做出的某些更改可能会危害其他function,甚至危及网站的安全。

核心中包含Action Hooks&Filters ,允许修改function而无需修改代码。

使用login_redirectfilterredirect某些用户的一个例子可以在这里find,是一个更为健壮的解决scheme,以解决您的问题。

对于你的具体问题,你想这样做:

 function login_redirect( $redirect_to, $request, $user ){ return home_url('news.php'); } add_filter( 'login_redirect', 'login_redirect', 10, 3 ); 

这可能有帮助。 彼得的loginredirect

login和注销后将用户redirect到不同的位置。

为特定用户,具有特定angular色的用户,具有特定function的用户以及所有其他用户的一揽子规则定义一组redirect规则。 另外,请设置一个redirecturl进行注册。 这一切都在设置>login/注销redirectpipe理。

您可以在您的URL中使用[variable]username[/variable]语法,以便系统在每次login时都会build立一个dynamicURL,用用户名replace该文本。 除了用户名,还有“userslug”,“homeurl”,“siteurl”,“postid-23”,“http_referer”,你也可以添加自己的自定义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 } } 

或者,如果您只想redirect其他用户:

 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 } } 

主题我的login插件可能会有帮助 – 它允许您将特定angular色的用户redirect到特定页面。

如果你有php 5.3+,你可以使用匿名函数,如下所示:

 add_filter( 'login_redirect', function() { return site_url('news'); } ); 

接受的答案显然不是一个好的答案! 它可能会解决你的问题一段时间,但下次你更新你的wordpress安装会发生什么? 你的核心文件可能会被覆盖,你将失去所有的修改。

正如其他人所说(Dan和Travis的答案),正确的答案是使用login_redirectfilter。

请试试这个,它适用于WordPress的任何redirect

 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; } 

functions.php文件与loginredirect没有任何关系,你应该考虑它是wp-login.php文件,你可以从那里改变整个login界面,强制用户redirect到你的自定义页面而不是/ wp-admin /目录。

使用Windows或任何文本编辑器打开文件。Prese Ctrl + F(在窗口上)find“wp-admin /”并将其更改为您希望在login后redirect到的文件夹,仍在同一文件中按Ctrl + F,find“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(); 

或者您可以使用“注册login插件” http://wordpress.org/extend/plugins/registration-login/ ,只需简单地编辑redirectURL以及login后要redirect到的位置的链接,已经得到你自己的自定义configuration文件。

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

要成功login后进行全局redirect,请在部分下的wp-login.php中find此代码。

  <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); ?>" /> 

并replace<?php echo esc_attr($redirect_to); ?> <?php echo esc_attr($redirect_to); ?>您的url,您要redirect。 该url必须以http://开头,并在其他页面上redirect到默认位置。

注册后在同一个文件中做同样的事情formsredirect,但是在<form name="registerform">部分。