避免重定向到WordPress中的仪表板

时间:2017-07-20 16:40:24

标签: php wordpress redirect login dashboard

据我所知,我可以在WordPress中使用以下代码,以确保已登录我网站的用户在点击主页上的登录按钮时不会被重定向到信息中心:

<?php
   if(is_user_logged_in()){
      // redirect to desired page
   }
?> 

我将非常感谢有关我应该放置此代码的位置的建议,以及应该使用我希望发送登录用户的页面的URL覆盖它的哪一部分。我应该补充一点,所需的页面与我引导用户登录时的页面相同。

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

由于我对您的问题不知情,您试图阻止用户可视化WordPress的信息中心。您可以阻止非管理员用户转到admin init hook上的Dashboard。

add_action( "admin_init", "prevent_dashboard_non_admin" );
function prevent_dashboard_non_admin() {
  if ( ! current_user_can('manage_options') && ! defined( 'DOING_AJAX' ) ) {
    wp_redirect( home_url() ); // You can change that home_url() to any page URL you are tring to redirect
  }
}

您可以将此代码放在 functions.php

注意:此代码尚未经过测试,请发表评论,如果您对此有任何疑问,我会创建更新。

<强>更新

function my_is_loggin_page() {
    if ( $GLOBALS['pagenow'] === 'wp-login.php' ) {
        if( is_user_logged_in() ) {
            wp_redirect( "yourpage" );
        }
    }
}

add_action( "init", "my_is_loggin_page", 12 );

答案 1 :(得分:0)

请查看此处,了解更多视角:https://codex.wordpress.org/Plugin_API/Filter_Reference/login_redirect

如果您想要登陆您的用户,例如登录后访问此页面 example.com/some-page / ,您可以使用以下代码:

function mysite_login_redirect($redirect_to, $request, $user) {
    if (!isset($_GET['loggedout'])) {    
    return (isset($user->roles) && is_array($user->roles) && in_array('administrator', $user->roles)) ? admin_url() : site_url('/some-page/');   
}    
}

add_filter('login_redirect', 'mysite_login_redirect', 10, 3);

这样做的算法很简单:

如果用户是管理员,请继续admin_url() 否则,重定向到site_url('/some-page/') login_redirect过滤器将三个参数传递给函数:

  • $redirect_to

  • $request

  • $user

我们主要关注第三个问题,因为我们可以查看其role属性以确定它是否包含管理员值。

有了这个,我们现在将非管理员用户重定向到特定页面,而不是仪表板。

site_url('/some-page/')将转换为 example.com/some-page /

希望它会对你有所帮助:)。