web-dev-qa-db-fra.com

Comment masquer les images de la bibliothèque multimédia des utilisateurs généraux?

En tant qu'administrateur, j'aime beaucoup les fonctionnalités du gestionnaire de média WordPress 3.5.

Avec un site multi-utilisateur, cependant, tous les utilisateurs peuvent voir toutes les images de la médiathèque, qu'elles aient été téléchargées ou non. Auparavant, un script functions.php pouvait masquer/restreindre l'accès.
Par exemple:

// 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');

Cela ne fonctionne plus car je pense que la médiathèque est maintenant basée sur JavaScript.

La question: comment puis-je maintenant masquer ou masquer les images de la médiathèque WordPress 3.5 destinées aux utilisateurs qui n'ont pas téléchargé les images dans la bibliothèque? Je souhaite que les utilisateurs voient uniquement leurs propres images ou uniquement les images qu'ils ont téléchargées dans ce message ou cette page.

La structure et la conception actuelles conviennent parfaitement à un journal qui souhaite partager des images sur l'ensemble de son organisation d'utilisateurs, mais elle l'est moins pour les sites qui ont besoin de contrôles plus stricts avec un accès indépendant à plusieurs utilisateurs.

Je ne suis pas un codeur - ou au mieux un amateur - mais il me semble que les options peuvent inclure: masquer ou coder tous les filtres de pièce jointe dans le nouveau menu déroulant de la bibliothèque 3.5, en ne laissant que la mention "Téléchargé sur cette page" - ou - éventuellement, un commutateur permettant aux administrateurs d'activer ou de désactiver la visibilité des images de la bibliothèque multimédia pour les utilisateurs généraux.

Toute orientation ou direction à ce sujet serait appréciée.

2
Jim I

Pour permettre aux utilisateurs actuels d'afficher uniquement les pièces jointes téléchargées, ajoutez le code suivant à vos actions de thèmes:

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;
}

J'espère que cela t'aides!

8
timocouckuyt

Merci @timocouckuyt, cela fonctionne bien, mais vous avez également besoin de celui-ci pour le lien /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;
}

Pour consulter le didacticiel complet permettant de masquer les messages et les publications d'autres utilisateurs, consultez ce didacticiel: http://jeffreycarandang.com/tutorials/hide-wordpress-posts-media-uploaded-users/

Cordialement, phpbits

0