it-swarm.com.de

Wie kann ich Medienbibliotheksbilder für allgemeine Benutzer ausblenden?

Als Administrator mag ich die Funktionen und den Funktionsumfang des WordPress 3.5-Medienmanagers sehr.

Bei einer Site mit mehreren Benutzern können jedoch alle Benutzer alle Bilder in der Medienbibliothek sehen - unabhängig davon, ob sie von ihnen hochgeladen wurden oder nicht. Zuvor konnte ein functions.php-Skript den Zugriff maskieren/einschränken.
Zum Beispiel:

// Hide Media Library tab Tab from each individual agent
function remove_medialibrary_tab($tabs) {
    if ( !current_user_can( 'update_core' ) ) {
        unset($tabs['library']);
        return $tabs;
    }    }
add_filter('media_upload_tabs','remove_medialibrary_tab');

Dies funktioniert nicht mehr, da ich glaube, dass die Medienbibliothek jetzt auf JavaScript basiert.

Die Frage: Wie kann ich jetzt die Bilder der WordPress 3.5-Medienbibliothek vor Benutzern verbergen oder maskieren, die die Bilder nicht in die Bibliothek hochgeladen haben? Ich möchte, dass Benutzer nur ihre eigenen Bilder oder nur die Bilder sehen, die sie zu diesem bestimmten Beitrag oder dieser Seite hochgeladen haben.

Die aktuelle Struktur und das aktuelle Design eignen sich hervorragend für Zeitungen, die Bilder für die gesamte Benutzerorganisation freigeben möchten. Für Websites, die strengere Kontrollen mit unabhängigem Mehrbenutzerzugriff benötigen, sind sie jedoch weniger geeignet.

Ich bin kein Kodierer - oder bestenfalls ein Amateur -, aber mir fallen folgende Optionen ein: Maskieren oder Kodieren aller Anhangsfilter im neuen Dropdown-Menü der Bibliothek 3.5, wobei nur "Auf diese Seite hochgeladen" in der Liste verbleibt. oder - möglicherweise ein Schalter, mit dem Administratoren die Sichtbarkeit der Medienbibliotheksbilder für allgemeine Benutzer ein- oder ausschalten können.

Jede Anleitung oder Anleitung hierzu wäre willkommen.

2
Jim I

Fügen Sie Ihren Themenaktionen den folgenden Code hinzu, damit die aktuellen Benutzer nur die von ihnen hochgeladenen Anhänge anzeigen können:

add_filter( 'posts_where', 'devplus_wpquery_where' );
function devplus_wpquery_where( $where ){
    global $current_user;

    if( is_user_logged_in() ){
         // logged in user, but are we viewing the library?
         if( isset( $_POST['action'] ) && ( $_POST['action'] == 'query-attachments' ) ){
            // here you can add some extra logic if you'd want to.
            $where .= ' AND post_author='.$current_user->data->ID;
        }
    }

    return $where;
}

Hoffe das hilft!

8
timocouckuyt

Danke @timocouckuyt, das funktioniert gut, aber du brauchst dieses auch für den Link /wp-admin/upload.php:

add_filter('pre_get_posts', 'hide_posts_media_by_other');
function hide_posts_media_by_other($query) {
global $pagenow;

if( 'upload.php' != $pagenow || !$query->is_admin ){
    return $query;
}

if( !current_user_can( 'manage_options' ) ) {
    global $user_ID;
    $query->set('author', $user_ID );
}
return $query;
}

Eine vollständige Anleitung zum Ausblenden von Medien und Beiträgen von anderen Benutzern finden Sie in dieser Anleitung: http://jeffreycarandang.com/tutorials/hide-wordpress-posts-media-uploaded-users/

Prost, Phpbits

0