1

私はWordPressにいます。2 つの配列を比較し、そのうちの 1 つからの一致を設定解除する必要があります。問題は、配列の 1 つが get_users からデータを取得しているため、foreach を使用してそれを文字列に変換する必要があると思われるため、配列内のユーザーに user_login を与えるように指示できます。私がそれについて間違っていない限り、私ができる必要があるのは、配列を取得し、foreach ステートメントを実行して、user_logins を取得するように指示し、それらをすべて配列に変換することだと思います。これが私がこれまでに持っているすべてです(そして、そこでifステートメントを正しく実行しているかどうか(「null」が正しい修飾子であるかどうか)についてはわかりません):

$adminnames = get_users('role=administrator');
$result = array_intersect($adminnames, $username);
if($result !== null){unset($username[$result]);}

$username は、ショートコードの属性の 1 つです。

また、あいまいさを許してください。「ユーザー名」に1人しかいない場合、それは配列ではないということですか? もしそうなら、これを台無しにするかもしれません。

- アップデート -

すべての管理者の user_login を取得する唯一の方法が foreach を実行してエコーすることである場合、これは不可能な場合もあります。

4

1 に答える 1

1

うまく機能するソリューションを見つけました。私はすでに $username 属性で preg_split を実行しているので、それを実行した後、これは $username 属性から管理者ユーザー名を設定解除するために行ったことです。

$users = preg_split("/[\s,]+/",$username);
wp_get_current_user();
if(current_user_can(administrator)){
        $nohidename = array_search($current_user->user_login,$users);
        if($nohidename !== FALSE){unset($users[$nohidename]);
        }
}

したがって、現在のユーザーが管理者であるかどうかに基づいて実行されます。そうでない場合は、そのままにします。よく働く。

編集- array_search を使用しない、さらに簡単な方法:

if(current_user_can(administrator)){
        if($username){
            unset($username);
        }
}
于 2013-10-06T20:31:58.720 に答える