Zweck
Redakteure sollen Inhalte ausschließlich über ACF und den WordPress-Editor pflegen. Elementor darf weder sichtbar noch versehentlich nutzbar sein.
Der folgende Code:
- entfernt den Button „Mit Elementor bearbeiten“
- entfernt Elementor aus der Admin-Bar
- entfernt Elementor-Metaboxen
- entfernt Elementor-Aktionen in Seiten- und Beitragslisten
- entfernt Elementor-Menüpunkte im Backend
- verhindert das Laden der Elementor-Admin-Skripte
- deaktiviert Elementor-Unterstützung für Redakteure vollständig
Code
<?php
/**
* Prüft, ob aktueller User Redakteur ist
*/
function arc_is_editor_user() {
$user = wp_get_current_user();
return in_array('editor', (array) $user->roles, true);
}
/**
* 1) "Mit Elementor bearbeiten"-Button im Post-Editor (klassisch & Gutenberg)
*/
add_action('admin_head', function () {
if (!arc_is_editor_user()) {
return;
}
echo '<style>
/* Button in der klassischen Editor-Ansicht */
#elementor-switch-mode,
#elementor-go-to-edit-page-link,
.elementor-edit-link-wrapper,
a[href*="elementor"] .edit-with-elementor,
/* Button oben auf der Seite (Post-Edit-Screen) */
#wp-admin-bar-elementor_edit_page,
.elementor-admin-bar-edit-button {
display: none !important;
}
</style>';
});
/**
* 2) Elementor-Metabox im klassischen Editor ausblenden
*/
add_action('add_meta_boxes', function () {
if (arc_is_editor_user()) {
remove_meta_box('elementor', null, 'normal');
remove_meta_box('elementor', null, 'side');
remove_meta_box('elementor', null, 'advanced');
}
}, 999);
/**
* 3) Elementor aus der Admin-Bar entfernen
*/
add_action('admin_bar_menu', function ($wp_admin_bar) {
if (arc_is_editor_user()) {
$wp_admin_bar->remove_node('elementor_edit_page');
$wp_admin_bar->remove_node('elementor');
}
}, 999);
/**
* 4) Elementor-Aktionen in Seiten- und Beitragslisten entfernen
*/
add_filter('page_row_actions', function ($actions, $post) {
if (arc_is_editor_user()) {
unset($actions['elementor_edit']);
unset($actions['edit_with_elementor']);
}
return $actions;
}, 999, 2);
add_filter('post_row_actions', function ($actions, $post) {
if (arc_is_editor_user()) {
unset($actions['elementor_edit']);
unset($actions['edit_with_elementor']);
}
return $actions;
}, 999, 2);
/**
* 5) Elementor-Skripte & Stile im Backend gar nicht erst laden
* → verhindert, dass der Button per JS nachträglich eingefügt wird
*/
add_action('admin_enqueue_scripts', function () {
if (arc_is_editor_user()) {
wp_dequeue_script('elementor-admin-app');
wp_dequeue_style('elementor-admin');
// Verhindert den Switch-Mode-Button
add_filter('elementor/utils/is_post_support_elementor', '__return_false');
}
}, 999);
/**
* 6) Elementor-Support für den Post-Typ vollständig deaktivieren
*/
add_filter('elementor/utils/is_post_support_elementor', function ($is_supported) {
if (arc_is_editor_user()) {
return false;
}
return $is_supported;
}, 999);
/**
* 7) Elementor-Menüpunkte im Admin-Menü ausblenden
*/
add_action('admin_menu', function () {
if (!arc_is_editor_user()) {
return;
}
remove_menu_page('elementor');
remove_submenu_page('elementor', 'elementor');
remove_submenu_page('elementor', 'elementor-getting-started');
remove_submenu_page('elementor', 'elementor-custom-fonts');
remove_submenu_page('elementor', 'elementor-custom-icons');
remove_submenu_page('elementor', 'go_elementor_pro');
// Elementor unter "Templates"
remove_submenu_page(
'edit.php?post_type=elementor_library',
'elementor_library'
);
}, 999);
/**
* 8) Verbleibende Elementor-Menüeinträge per CSS ausblenden
*/
add_action('admin_head', function () {
if (!arc_is_editor_user()) {
return;
}
echo '<style>
#adminmenu #toplevel_page_elementor,
#adminmenu a[href*="elementor"] {
display: none !important;
}
</style>';
});
?>Hinweis
Das reine Ausblenden per CSS reicht in aktuellen Elementor-Versionen oft nicht aus. Elementor lädt Teile seiner Oberfläche dynamisch per JavaScript nach. Die zuverlässigste Lösung besteht deshalb aus mehreren Schutzebenen:
1. Elementor-Buttons ausblenden
2. Elementor-Menüs entfernen
3. Elementor-Metaboxen entfernen 4
. Elementor-Admin-Skripte nicht laden
5. Elementor-Unterstützung über `elementor/utils/is_post_support_elementor` deaktivieren Dadurch bleibt Elementor für Administratoren vollständig nutzbar, während Redakteure ausschließlich mit ACF und dem WordPress-Editor arbeiten.