WP-Dashboard
Um ein benutzerdefiniertes WP-Dashboard zu erstellen und den Zugriff auf andere Bereiche des Admin-Bereichs zu beschränken, können folgende Schritte ausgeführt werden. Dies ist besonders nützlich, wenn den Nutzern eine vereinfachte Oberfläche angeboten werden soll oder spezielle Benutzerrollen Einschränkungen benötigen.
1. Erstellen eines benutzerdefinierten Dashboard-Widgets
Zuerst werden wir ein benutzerdefiniertes Dashboard-Widget erstellen, das spezifische Informationen oder Funktionen für die Benutzer anbietet.
function my_custom_dashboard_widget() {
echo "<img src='http://www.dev-becker.de/wp-content/uploads/2023/03/logo-1.svg' style='float: right;' />";
echo "<h1>Willkommen auf Ihrem Dashboard!</h1><p>Hier finden Sie grundlegende Info's zu Ihrer WP-Installation.</p>";
global $wpdb;
$server_typ = $_SERVER['SERVER_SOFTWARE'];
$db_version = $wpdb->db_version();
$db_typ = $wpdb->db_version(); // Abruf der Datenbankversion
$datenbank_typ = $wpdb->use_mysqli ? 'MySQLi' : 'MySQL';
$site_url = site_url();
$wp_version = get_bloginfo('version');
$anzahl_benutzer = count_users();
$anzahl_seiten = wp_count_posts('page')->publish;
// Speicherbelegung berechnen
$total_space = disk_total_space(".")/ 1024 / 1024 / 1024; // Gesamtspeicherplatz
$free_space = disk_free_space(".")/ 1024 / 1024 / 1024; // Freier Speicherplatz
$used_space = ($total_space - $free_space); // Belegter Speicherplatz berechnen
$total_space_formatted = number_format($total_space, 2, '.', '') . ' GB';
$free_space_formatted = number_format($free_space, 2, '.', '') . ' GB';
$used_space_formatted = number_format($used_space, 2, '.', '') . ' GB';
echo "<h2>$site_url</h2>";
echo "<p>Installierte WordPress-Version: $wp_version</p>";
echo "<p>Server-Typ: $server_typ</p>";
echo "<p>Datenbank: $datenbank_typ Version: $db_version</p>";
echo "<p>Gesamter Speicherplatz: $total_space_formatted</p>";
echo "<p>Belegter Speicherplatz: $used_space_formatted</p>";
echo "<p>Freier Speicherplatz: $free_space_formatted</p>";
echo "<h2>Ihr Betreuerteam:</h2>";
echo "<a href='https://www.dev-becker.de' target='_blank' style='display: inline-block;'><img src='https://www.dev-becker.de' style='max-height: 48px;' /></a>";
echo "<h2>Statistik:</h2>";
echo "<p>Anzahl der registrierten Benutzer: {$anzahl_benutzer['total_users']}</p>";
echo "<p>Anzahl der aktiven Seiten: $anzahl_seiten</p>";
}
function add_custom_dashboard_widget() {
wp_add_dashboard_widget('custom_dashboard_widget', 'HBDev Dashboard', 'my_custom_dashboard_widget');
}
add_action('wp_dashboard_setup', 'add_custom_dashboard_widget');
2. Entfernen aller anderen Dashboard-Widgets
Um das Dashboard weiter zu vereinfachen, könne alle anderen vorinstallierten Widgets entfernt werden.
function remove_other_dashboard_widgets() {
global $wp_meta_boxes;
$dashboard = 'dashboard';
$normal = 'normal';
$side = 'side';
$advanced = 'advanced';
// Widgets, die nicht entfernt werden sollen
$keep_widget_ids = ['custom_dashboard_widget']; // ID Ihres benutzerdefinierten Widgets
foreach ($wp_meta_boxes[$dashboard][$normal]['core'] as $id => $widget) {
if (!in_array($id, $keep_widget_ids)) {
unset($wp_meta_boxes[$dashboard][$normal]['core'][$id]);
}
}
foreach ($wp_meta_boxes[$dashboard][$side]['core'] as $id => $widget) {
if (!in_array($id, $keep_widget_ids)) {
unset($wp_meta_boxes[$dashboard][$side]['core'][$id]);
}
}
foreach ($wp_meta_boxes[$dashboard][$advanced]['core'] as $id => $widget) {
if (!in_array($id, $keep_widget_ids)) {
unset($wp_meta_boxes[$dashboard][$advanced]['core'][$id]);
}
}
}
add_action('wp_dashboard_setup', 'remove_other_dashboard_widgets', 999);
3. Beschränken des Zugriffs auf andere Admin-Seiten
Hiermit wird der Zugriff auf andere Seiten im WordPress-Adminbereich eingeschränkt, indem die Benutzer umgeleitet werden, wenn sie versuchen, auf diese Seiten zuzugreifen.
function restrict_admin_pages() {
$user = wp_get_current_user();
if ( isset( $user->roles ) && is_array( $user->roles ) ) {
// Überprüfen Sie, ob der Benutzer nicht Administrator ist
if ( !in_array( 'administrator', $user->roles ) ) {
global $pagenow;
$allowed_pages = ['admin-ajax.php', 'admin-post.php', 'index.php']; // Erlauben Sie Zugriff auf das Dashboard und Ajax-Handler
if ( !in_array( $pagenow, $allowed_pages ) ) {
wp_redirect( admin_url('index.php') ); // Umleitung zum Dashboard
exit;
}
}
}
}
add_action('admin_init', 'restrict_admin_pages');
4. Anpassen der Admin-Menüs
Hier werden spezifische Menüpunkte entfernt, um sicherzustellen, dass Benutzer nur auf erlaubte Bereiche zugreifen können.
function remove_menus(){
if ( !current_user_can('administrator') ) {
remove_menu_page('tools.php'); // Tools
remove_menu_page('options-general.php'); // Einstellungen
// Fügen Sie zusätzliche Menüseiten hinzu, die Sie entfernen möchten
}
}
add_action('admin_menu', 'remove_menus');function remove_menus(){
if ( !current_user_can('administrator') ) {
remove_menu_page('tools.php'); // Tools
remove_menu_page('options-general.php'); // Einstellungen
// Fügen Sie zusätzliche Menüseiten hinzu, die Sie entfernen möchten
}
}
add_action('admin_menu', 'remove_menus');
Durch die Kombination dieser Maßnahmen kann man ein stark angepasstes und eingeschränktes WordPress-Dashboard erstellen, das auf die spezifischen Bedürfnisse und Rollen der Benutzer zugeschnitten ist. Es ist wichtig, das die Benutzerrollen und Berechtigungen genau geprüft werden um sicherzustellen, dass keine unerwünschten Zugriffspunkte offen bleiben.