web-dev-qa-db-ja.com

スーパーアドミンのテスト方法

mu-plugins.phpファイルに次のコードがあり、is_super_admin()関数が正しくtrueにならない。

私はv4.2.4を実行しています

function check_for_superAdmin() {
    if ( is_super_admin() ) { echo 'I\'m a Super Admin !'; exit; }
}
add_action( 'wp_login', 'check_for_superAdmin' );

誰もが理由を見ることができますか?

注:

面白い

以下のコードはcurrent user login usernameに対して空を返します。フックを間違った場所に持っていないのでしょうか。

function check_for_superAdmin() {
    $curUser = wp_get_current_user();
    echo $curUser->user_login . ' is the user';
    exit;
    if ( is_super_admin() ) { echo 'I am the Super Admin !'; exit; }
}
add_action( 'wp_login', 'check_for_superAdmin' );

追加の注意事項:

function check_for_superAdmin($user_login, $user) {
    //$current_user = wp_get_current_user(); // THIS DOES NOT FIND THE CURRENT USER
    //echo $user_login; // THIS ACCURATELY SHOWS THE LOGGED IN USER
    //echo $user; // THIS THROWS A SERVER 500 ERROR
}
add_action( 'wp_login', 'check_for_superAdmin', 10, 2 );
  • $current_user = wp_get_current_user();は上記のfunction()内では動作しません
  • $user_loginは上記のfunction()内で動作します
  • $userはサーバー500エラーになります
2
tammy

Mu-pluginsディレクトリでは、私のsuperAdmin.phpスクリプトは次のようになります。

<?php

function check_for_superAdmin($user_login, $user) {
    $current_user = get_userdatabylogin($user_login);
    if ( is_super_admin( $current_user->ID ) ) { // do these things }
    else { // do other things }
}
add_action( 'wp_login', 'check_for_superAdmin', 10, 2 );

?>

これが、同じ方法でフックしたい人に役立つことを願っています。

1
tammy