Elementor für Redakteure vollständig deaktivieren

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.