重定向,如果不确定用户 - wordpress

时间:2016-07-24 09:51:07

标签: php wordpress

我在wordpress中为某个用户创建了一个页面。假设他的用户名是约翰。我正在寻找只允许'John'访问该页面的PHP脚本,如果用户名不同于'John'的用户试图访问该页面,他们会被重定向到另一个页面。

我是PHP的新手,所以这里有一些我尝试过的代码。但它重定向所有用户,甚至是用户名为'John'的用户

<?php $user_info = get_userdata(1);
  $username = $user_info->user_login;
if ( $username=='John' ) {
echo '';
} else {
wp_redirect( home_url() );
exit;
}
?>

这是一个带有参数的wordpress页面,用于获取用户数据 - https://codex.wordpress.org/Function_Reference/get_userdata

3 个答案:

答案 0 :(得分:2)

您可以使用wp_get_current_user()功能。

global $current_user; 
get_currentuserinfo();
$username = $current_user->user_login;

if ( $username == 'John' ) {
    echo '';
} else {
    wp_redirect( home_url() );
    exit;
}

答案 1 :(得分:1)

这可以解决您的问题。

add_action( 'init', 'blockusers_init' );
function blockusers_init() {
  global $current_user; 
  $current_user = wp_get_current_user();
  if ( 'John' == $current_user->user_login ) {
    //your desire page url
    wp_redirect( 'your page url' );
    exit;
  } else {
     wp_redirect( home_url() );
     exit;
  }
}

参考

add_action( 'init', 'blockusers_init' );
function blockusers_init() {
  if ( is_admin() && ! current_user_can( 'administrator' ) &&
 ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
    wp_redirect( home_url() );
    exit;
 }
}

https://premium.wpmudev.org/blog/limit-access-to-your-wordpress-dashboard/

答案 2 :(得分:0)

试试这个:首先检查用户是否已登录_如果是,则获取用户信息并随意执行任何操作

if(is_user_logged_in()){
  $current_user = wp_get_current_user();
      if($current_user->user_login == "John"){
             wp_safe_redirect("Where ever you want");
             exit;
           }
      else
          wp_safe_redirect(home_url('/'));

注意:确保在数据库中检查您的用户名,我将用户名设置为我的姓氏。