Wie kann ich Nicht-Admins auf die Startseite redirect, wenn ich mysite.com/wp-admin/ aufrufen möchte?

Ich möchte alle meine Benutzer (Mitwirkende und Autoren), aber die Admins werden auf die Homepage weitergeleitet, wenn sie versuchen, mysite.com/wp-admin/ zu sehen. Autoren und Autoren müssen Beiträge wie gewohnt hinzufügen und bearbeiten können, zusammen mit anderen, die sie umgeleitet werden müssen … Ich habe den Link zum Dashboard bereits entfernt … Ich habe auch einige Plugins ausprobiert Dasjenige, das näher kommt (Remove Dashboard Access) leitet zur Hauptseite um, verhindert jedoch, dass Autoren und Autoren Beiträge hinzufügen, bearbeiten und löschen. Vielen Dank!

Solutions Collecting From Web of "Wie kann ich Nicht-Admins auf die Startseite redirect, wenn ich mysite.com/wp-admin/ aufrufen möchte?"

Ich benutze diesen Code seit einer Weile Ich denke, es war ursprünglich auf einem Plugin namens WP Block Admin, aber das funktioniert. Sie müssen nur die erforderliche Kompatibilität ändern, damit es das tut, was Sie brauchen, schauen Sie sich das an

$required_capability = 'edit_others_posts'; $redirect_to = ''; function no_admin_init() { // We need the config vars inside the function global $required_capability, $redirect_to; // Is this the admin interface? if ( // Look for the presence of /wp-admin/ in the url stripos($_SERVER['REQUEST_URI'],'/wp-admin/') !== false && // Allow calls to async-upload.php stripos($_SERVER['REQUEST_URI'],'async-upload.php') == false && // Allow calls to admin-ajax.php stripos($_SERVER['REQUEST_URI'],'admin-ajax.php') == false ) { // Does the current user fail the required capability level? if (!current_user_can($required_capability)) { if ($redirect_to == '') { $redirect_to = get_option('home'); } // Send a temporary redirect wp_redirect($redirect_to,302); } } } // Add the action with maximum priority add_action('init','no_admin_init',0); 

Leider funktionierte keiner der oben genannten Codes für mich, da sie nur Nicht-Admin zur Startseite umgeleitet haben, auch wenn Autoren und Mitwirkende ihre Beiträge hinzufügen / bearbeiten und löschen konnten … Ich habe damit aufgehört, die Boxen im Dashboard zu entfernen und ich triggerse (teilweise) mein Problem.

Ich habe das in functions.php hinzugefügt

 function disable_default_dashboard_widgets() { remove_meta_box('dashboard_right_now', 'dashboard', 'core'); remove_meta_box('dashboard_recent_comments', 'dashboard', 'core'); remove_meta_box('dashboard_incoming_links', 'dashboard', 'core'); remove_meta_box('dashboard_plugins', 'dashboard', 'core'); remove_meta_box('dashboard_quick_press', 'dashboard', 'core'); remove_meta_box('dashboard_recent_drafts', 'dashboard', 'core'); remove_meta_box('dashboard_primary', 'dashboard', 'core'); remove_meta_box('dashboard_secondary', 'dashboard', 'core'); } add_action('admin_menu', 'disable_default_dashboard_widgets'); 

Ich weiß, das ist noch eine alte Frage, aber Sie können es sich ansehen.

 function redirect_non_admin_user(){ if ( !defined( 'DOING_AJAX' ) && !current_user_can('administrator') ){ wp_redirect( site_url() ); exit; } } add_action( 'admin_init', 'redirect_non_admin_user' ); 

Diese Überprüfung ist sehr WICHTIG “! Definiert (‘DOING_AJAX’)”, wenn Sie einen Admin-Ajax-Aufruf im Frontend verwenden.

Ein Zusatz: IMMER prüfen, ob ein eingeloggter Benutzer vorhanden ist. Andernfalls verhindern Sie, dass gesicherte Objekte auf dem Anmeldebildschirm angezeigt werden:

 function redirect_non_admin_user(){ if ( is_user_logged_in() ) { if ( !defined( 'DOING_AJAX' ) && !current_user_can('administrator') ){ wp_redirect( site_url() ); exit; } } } add_action( 'admin_init', 'redirect_non_admin_user' ); 

Vielen Dank für das Angebot dieser Lösung 🙂

Es gibt nur zwei Dinge, die Sie überprüfen müssen:

  • Wenn sich der Benutzer in der Admin-Oberfläche befindet
  • Wenn er die Fähigkeit hat oder nicht

Solange wir den template_redirect Hook verwenden, müssen wir die Seiten login / register / password nicht überprüfen, da die Weiterleitung für den Benutzer unsichtbar ist.

Hier ist die Idee als kleines (mu-) Plugin eingepackt.

 < ?php /** * Plugin Name: (#90535) Redirect Non-Admin users to the "Home"-page. * Description: Checks if we're in the admin UI and if the user has the admin only 'manage_options' capability * Version: 2013.03.12 * Author: Franz Josef Kaiser */ add_action( 'template_redirect', 'wpse90535_admin_denied' ); function wpse90535_admin_denied() { is_admin() && ! current_user_can( 'manage_options' ) and exit( wp_redirect( home_url(), 302 ) ); }