it-swarm.com.de

Überprüfen Sie, ob der aktuelle Benutzer Administrator in WordPress ist

Ich entwickle ein Plugin für WordPress, ich möchte herausfinden, ob der aktuelle Benutzer Administrator ist oder nicht. Leider konnte ich current_user_can () nicht verwenden, da es mir einen Fehler gibt, also den globalen $ current_user. Aber ich konnte den if-Teil nicht einmal für Admin-Benutzer bekommen. Wie kann ich das beheben?

global $current_user;
if ($current_user->role[0]=='administrator'){
function hide_post_page_options() {
//global $post;
// Set the display css property to none for add category and add tag functions
$hide_post_options = "<style type=\"text/css\"> .jaxtag { display: none; } #category-adder { display: none; } </style>";
print($hide_post_options);
}
add_action( 'admin_head', 'hide_post_page_options'  );
}
16
NEO

Versuchen Sie etwas wie das Folgende:

if ( current_user_can( 'manage_options' ) ) {
    /* A user with admin privileges */
} else {
    /* A user without admin privileges */
}

Lesen Sie mehr über die current_user_can-Funktion hier .

43
Sugato

Fordern Sie den Benutzer an und prüfen Sie, ob er über den Rollenadministrator verfügt:

function is_site_admin(){
    return in_array('administrator',  wp_get_current_user()->roles);
}

if (is_site_admin()) {
  echo 'Woot Woot';
} else {
  echo 'So sad, I have no rights';
}
15
Tosh

Das funktioniert für mich:

  global $current_user;

  if( !empty($current_user->roles) ){
    foreach ($current_user->roles as $key => $value) {
      if( $value == 'administrator' ){
        Do Something
      }
    }
  }

Wenn es sich nicht um eine Einrichtung mit mehreren Standorten handelt, können Sie hiermit einen Administrator erkennen. Wenn es sich um mehrere Standorte handelt, wird dies nur für einen Superadministrator als wahr zurückgegeben.

  $user_ID = get_current_user_id();
  if($user_ID && is_super_admin( $user_id )) {
    Do Something
  }
7
codewaggle

Ich weiß, es ist eine alte Frage, aber ich möchte diese Seite nützlicher machen, indem sie auf das aktuelle Problem eingeht. Das eigentliche Problem hier ist, dass OP current_user_can( 'manage_options' ) nicht in seinem Plugin verwenden konnte. Die Verwendung der Funktion löst den üblichen Fehler undefined function... PHP aus. Dies geschieht, weil das Plugin initialisiert wird, bevor der WP -Kern vollständig geladen wurde. Fix ist sehr einfach. Das Laden des Plugins zu gegebener Zeit ist der Schlüssel. 

Unter der Annahme, dass sich der Admin-Plugin-Code innerhalb einer Klasse MyPlugin befindet, sollte die Klasseninitialisierung mit init verknüpft werden. Folgend ist eine Art, es zu tun. 

/**
 * Plugin Class
 */
class MyPlugin{
    public function __construct(){
        /* all hooks and initialization stuff here */

        /* only hook if user has appropriate permissions */
        if(current_user_can('manage_options')){
            add_action( 'admin_head', array($this, 'hide_post_page_options'));
        }
    }

    function hide_post_page_options() {
        // Set the display css property to none for add category and add tag functions
        $hide_post_options = "
        <style type=\"text/css\"> 
            .jaxtag { display: none; } 
            #category-adder { display: none; } 
        </style>";

        print($hide_post_options);
    }
}

add_action('admin_init', function(){
    $myplugin = new MyPlugin();
});

Auf diese Weise können Sie sicherstellen, dass der WordPress-Kern für die Plugin-Funktion verfügbar ist. 

admin_init Dokumentation hier

P.S. Sie sollten mit PHP HEREDOC nachschlagen. Es ist eine sehr einfache Art, mehrzeilige Zeichenfolgen zu schreiben. Ihr Style-Block kann wie folgt umgeschrieben werden 

$hide_post_options = <<<HTML
<style type="text/css"> 
    .jaxtag { display: none; } 
    #category-adder { display: none; }
</style>
HTML;

Ich hoffe es hilft jemandem.

Vielen Dank. 

6
Ejaz

Zu spät für eine Antwort auf diese Frage, aber ich denke, es könnte trotzdem nützlich sein, wenn jemand wie ich hier landet.

Ich brauchte eine schnelle Lösung für dieses Problem. Überprüfen Sie, ob der aktuelle Benutzer admin ist oder nicht.

Vom WP -Codex habe ich eine einfache Lösung bekommen, die zu verwenden ist ..

if(is_super_admin($user_id)) {
  // do stuff for the admin user...
}

Laut WP-Codex gibt diese Funktion True zurück, wenn der aktuell angemeldete Benutzer Netzwerkadministrator ist. Diese Funktion gibt True zurück, auch wenn der Netzwerkmodus deaktiviert ist, der aktuelle Benutzer jedoch admin ist.

3
miyaneha

verwenden Sie diesen Code, ich hoffe, das Ihr Problem lösen

global $current_user;
$user_roles = $current_user->roles;
$user_role = array_shift($user_roles);
echo trim($user_role);
2
Yatendra

Getestet und es funktioniert gut

if(current_user_can('administrator') ) {
   echo 'ok' ;
}else{
   echo 'out' ;
}
0
Ulrich Dohou
$user=wp_get_current_user();
if(in_array("administrator", $user->roles)){
  //user role is admin
}
0
Brad