在WordPress上登录后重定向

时间:2011-11-14 20:12:40

标签: php wordpress redirect wordpress-theming

我正在基于现有网站创建自定义WordPress主题。

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

如何在登录后将用户定向到“news.php”而不是“/wp-admin/”?

-

编辑:有一个可用的插件,但是对于任何能通过functions.php找到手动方式的人来说仍然可以获得赏金,因为它会比使用第三方插件更安全-in。

15 个答案:

答案 0 :(得分:77)

这应该可以解决您的问题。改编自here.

的答案
function admin_default_page() {
  return '/new-dashboard-url';
}

add_filter('login_redirect', 'admin_default_page');

答案 1 :(得分:31)

接受的答案非常错误。永远不应该修改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 );

答案 2 :(得分:12)

这可能会有所帮助。 Peter's Login Redirect

  

登录和注销后将用户重定向到其他位置。

     

为特定用户,具有特定角色的用户,具有特定功能的用户以及针对所有其他用户的总括性规则定义一组重定向规则。另外,为注册后设置重定向URL。这一切都在设置>中进行管理登录/注销重定向。

     

您可以在网址中使用语法[variable]username[/variable],以便系统在每次登录时构建动态网址,并使用用户的用户名替换该文本。除了用户名,还有“userslug”,“homeurl”,“siteurl”,“postid-23”,“http_referer”,您还可以添加自己的自定义网址“变量”......

答案 3 :(得分:7)

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

答案 4 :(得分:2)

Theme My Login插件可能有所帮助 - 它允许您将特定角色的用户重定向到特定页面。

答案 5 :(得分:2)

如果你有php 5.3+,你可以使用像这样的匿名函数:

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

答案 6 :(得分:2)

请尝试这个,它适用于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;

}

答案 7 :(得分:1)

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

正如其他人已经说过的那样(Dan和Travis回答),正确的答案是使用login_redirect过滤器。

答案 8 :(得分:0)

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

答案 9 :(得分:0)

要在成功登录后进行全局重定向,请在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必须以http://开头,并以/其他明智的页面重定向到默认位置结束。

在注册后使用相同的文件但在<form name="registerform">部分下进行重定向。

答案 10 :(得分:0)

// 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 :(得分:0)

您还可以将自定义链接用作:

https://example.com/wp-login.php?redirect_to=https://example.com/news.php

答案 12 :(得分:0)

根据其他一些答案,我想出了这个:

/**
 * Require login on all pages
 */
function so8127453_require_login() {
  if ( ! is_user_logged_in() ) {

    $protocol = $_SERVER['HTTPS'] == 'on' ? 'https://' : 'http://';
    $base = $_SERVER['SERVER_NAME'];
    $uri = $_SERVER['REQUEST_URI'];

    $attempted_accessed_url = $protocol . $base . $uri;
    $login_url = 'https://' . $base . '/wp-login.php?redirect_to=' . $attempted_accessed_url;

    wp_redirect( $login_url );
  }
}
add_action( 'template_redirect', 'so8127453_require_login' );

将所有流量重定向到登录页面。然后到尝试访问的 URL。

答案 13 :(得分:0)

我在搜索“如何修复 WordPress 登录页面刷新和重定向问题?”并没有找到任何好的修复方法。从这个 Stackoverflow 问题中,我得到了帮助。我想与他人分享,以便他们在需要时获得帮助。

在我的网站上,当我输入电子邮件和密码时,我一次又一次地重定向到 wp-admin 并要求输入密码。这段代码帮助我解决了这个问题:

function admin_default_page() {
  return '/';
}

add_filter('login_redirect', 'admin_default_page');

答案 14 :(得分:-1)

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/,只需简单地编辑重定向网址以及登录后您希望其重定向的链接,您就拥有了自己的自定义配置文件。