it-swarm.com.de

Wie entferne ich den gesamten Medienbereich aus der WordPress-Hauptnavigation, ohne ihn nur auszublenden?

Ich möchte den gesamten Bereich "Medien" von der Hauptnavigation des WordPress-Administrators auf der linken Seite entfernen. Was ich nicht tun möchte, ist es einfach mit CSS oder einem Plugin/einer Funktion "zu verstecken", wie ich es unten getan habe, weil es immer noch über die URL erreichbar ist. Dies ist von entscheidender Bedeutung. Benutzer sollten die Uploads der anderen Benutzer auf keinen Fall sehen.

Hier ist, was ich derzeit habe, was es nur verbirgt. Wenn Sie in der URL zu upload.php gegangen sind, können Sie immer noch darauf zugreifen.

add_action( 'admin_menu', 'remove_menu_links' );
function remove_menu_links() {
    remove_menu_page('upload.php'); //remove media
}

Irgendwelche Ideen? Eine meiner Meinung nach geeignete Methode wäre es, den Benutzer nur mit einer Fehlermeldung an das Dashboard zu leiten, wenn er versucht, auf die URL upload.php zuzugreifen. Ich bin mir nicht sicher, wie ich das machen soll.

1
Andrew

Sie haben in der Tat Recht, dass vor dem Administrator-Update (ich stelle mir das UI-Redesign usw. vor) das Deaktivieren von Elementen aus den Menüs den Zugriff auf diese Seiten verhindern würde. Dies hat sich jetzt eindeutig geändert und erfordert eine zusätzliche Überprüfung der Obergrenze.

Dies ist nichts, was ich mir angeschaut habe (wie ich gerade herausgefunden habe), daher kann ich nicht über Methoden sprechen, um dies zu tun. Aber es stört mich, dass sie jetzt eine einfache, unlösbare Aufgabe geworden sind in eine größere, die eine bedingte Fähigkeitsprüfung erfordert (es ist nur mehr Beinarbeit, die vorher nicht erforderlich war).

Weiter von der Offenbarung:

Ok, da die remove_menu_page- und Untermenü-Entsprechungen jetzt so gut wie sinnlos sind (ich meine ernsthaft, was nützt es, wenn eine Seite einfach ausgeblendet wird), würde ich vorschlagen, die Medienuntermenü-Elemente zu durchlaufen und die erforderlichen Großbuchstaben im Handumdrehen zu aktualisieren (wenn du das tun musst).

Dies scheint das gewünschte Ergebnis zu haben ... :)

add_action( 'admin_menu', 'remove_menu_links' );
function remove_menu_links() {
    global $submenu;
    remove_menu_page('upload.php');
    foreach( $submenu['upload.php'] as $position => $data ) {
        $submenu['upload.php'][$position][1] = 'desired cap here';
    }
}

HINWEIS: Wenn Sie möchten, dass die Elemente vollständig verschwunden oder nicht mehr zugänglich sind, verwenden Sie einfach eine nicht vorhandene Kappe (oder lassen Sie den Code wie oben angegeben).

Aktualisierte Version des obigen Codes:

Wenn Sie Ihrem letzten Kommentar folgen, ist es vielleicht klug, es so zu machen ... oder so ähnlich.

add_action( 'admin_menu', 'remove_menu_links' );
function remove_menu_links() {
    global $submenu;

    // Remove media for non-admins
    if( !current_user_can('manage_options') )
        remove_menu_page('upload.php');

    // Still need to update cap requirements even when hidden
    foreach( $submenu['upload.php'] as $position => $data ) {
        $submenu['upload.php'][$position][1] = 'manage_options';
    }
}

Mir ist klar, dass Sie den current_user_can-Aufruf tatsächlich noch benötigen, nur um das Entfernen des übergeordneten Elements zu konditionieren.

5
t31os

Warum versuchst du es nicht mit Role Scoper Plugin ?

0
Giri