在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_redirect
filterredirect某些用户的一个例子可以在这里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_redirect
filter。
请试试这个,它适用于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">
部分。