it-swarm.com.de

Erlauben Sie nur Administratoren und Redakteuren, auf wp-admin zuzugreifen

Ich versuche, den Zugriff auf wp-admin so einzuschränken, dass nur Administratoren und Redakteure zugelassen sind. Im Moment benutze ich diese Funktion:

function restrict_admin(){
    //if not administrator, kill WordPress execution and provide a message
    if ( ! current_user_can( 'manage_options' ) ) {
        wp_die( __('You are not allowed to access this part of the site') );
    }
}
add_action( 'admin_init', 'restrict_admin', 1 );

Dies erledigt die Aufgabe jedoch nur für den Administrator. Redakteure dürfen nicht auf diesen Teil der Website zugreifen. Was kann ich machen?

4
user2358350

Sie haben insofern Recht, als Sie nach einer Fähigkeit suchen sollten. Verwaltungsoptionen werden jedoch standardmäßig nur Administratoren angeboten. Sie sollten eine Funktion prüfen, über die sowohl Bearbeiter als auch Administratoren verfügen, z. B. delete_others_posts.

function restrict_admin(){
//if not administrator, kill WordPress execution and provide a message
    if ( ! current_user_can( 'delete_others_posts' ) ) {
        wp_die( __('You are not allowed to access this part of the site') );
    }
}
add_action( 'admin_init', 'restrict_admin', 1 );

Siehe Rollen und Fähigkeiten aus dem Codex.

3
Andrew Bartel

Sie können dies auch verwenden:

<?php if( current_user_can('editor') || current_user_can('administrator') ) {  ?> 
    // stuff here for admins or editors
<?php } ?>

Für eine ausführliche Referenz überprüfen Sie bitte diesen thread on stack.

Vielen Dank

0
Vee

Da das Übergeben von Rollennamen an current_user_can () gemäß Codex nicht empfohlen wird, da dies nicht garantiert korrekt funktioniert (siehe # 22624 ), ist die beste Option in etwa so.

$user = wp_get_current_user();
$allowed_roles = array('administrator','editor');

if(array_intersect($allowed_roles, $user->roles)){
    //user have $allowed_roles
}
0
mokiSRB