我在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
答案 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('/'));
注意:确保在数据库中检查您的用户名,我将用户名设置为我的姓氏。