そのネットワーク内の別のブログの管理者であるにもかかわらず、その特定のブログにユーザーとして割り当てられていない場合、そのユーザーがその特定のブログにユーザーとして割り当てられていない場合、そのロールのユーザーを制限します。 $user
がログインしようとしている人のユーザー名であるget_blogs_of_user( $user );
関数を使ってそれができることを私は願っています。
編集:私のコードは以下の通りです。
$info = array();
$info['user_login'] = $_POST['username'];
$info['user_password'] = $_POST['password'];
$info['remember'] = true;
$user_signon = wp_signon($info, false);
if (is_wp_error($user_signon)) {
echo json_encode(array('loggedin' => false, 'message' => __('Invalid Credentials.')));
} else {
$get_blogs = get_blogs_of_user(get_user_by('login',$info['user_login'])->ID);
$is_has_access = array_search(get_current_blog_id(), array_column($get_blogs, 'userblog_id'));
if (!$is_has_access) {
wp_logout();
echo json_encode(array('loggedin' => false, 'message' => __('You have no permission to access.')));
} else {
echo json_encode(array('loggedin' => true, 'message' => __('Login successful')));
}
}
もっと良い方法はありますか?
is_user_logged_in()
は プラガブル関数 です。つまり、機能をオーバーライドできます。おそらくそれが私が始めたところです。
このような何かはあなたが探していることをするかもしれません。これはテストされていないコードであり、いかなる保証も伴いません。
function is_user_logged_in() {
$user = wp_get_current_user();
$current_blog_id = get_current_blog_id();
$allowed = false;
$blogs_of_user = get_blogs_of_user( $user->ID );
foreach( $blogs_of_user as $blog ) {
if( $blog->userblog_id == $current_blog_id ) {
$allowed = true;
}
}
if( ! $allowed ) {
return false;
}
return $user->exists();
}