¿Cómo puedo ocultar las imágenes de la biblioteca de medios de los usuarios generales?

2

Como administrador, me gustan mucho las características y la funcionalidad del administrador de medios de WordPress 3.5.

Sin embargo, con un sitio multiusuario, todos los usuarios pueden ver todas las imágenes en la biblioteca multimedia, ya sea que las hayan subido o no. Anteriormente, un script functions.php podía enmascarar / restringir el acceso.
Por ejemplo:

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

Esto ya no funciona porque creo que la biblioteca de medios ahora está basada en JavaScript.

La pregunta: ¿cómo puedo ocultar o enmascarar las imágenes de la biblioteca de medios de WordPress 3.5 de los usuarios que no cargaron las imágenes en la biblioteca? Quiero que los usuarios solo vean sus propias imágenes o que solo vean las imágenes que subieron a esta publicación o página específica.

La estructura y el diseño actuales son excelentes para un periódico que quiere compartir imágenes en toda su organización de usuarios, pero no tan bueno para sitios que necesitan controles más estrictos con acceso independiente para múltiples usuarios.

No soy un programador, o soy un aficionado en el mejor de los casos, pero se me ocurre que las opciones pueden incluir: enmascarar o codificar todos los filtros de adjuntos en el nuevo menú desplegable de la biblioteca 3.5, dejando solo "cargado en esta página" en la lista o posiblemente un interruptor que permitiría a los administradores cambiar la visibilidad a las imágenes de la biblioteca de medios para usuarios generales.

Cualquier orientación o dirección sobre esto sería apreciada.

    
pregunta Jim I 20.12.2012 - 17:57

2 respuestas

8

Para permitir que los usuarios actuales solo vean sus archivos adjuntos cargados, agregue el siguiente código a sus acciones de temas:

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

Espero que esto ayude!

    
respondido por el timocouckuyt 05.07.2013 - 16:49
0

Gracias @timocouckuyt, eso funciona bien, pero también necesitas este para el enlace /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;
}

Para ver el tutorial completo para ocultar los medios y las publicaciones de otros usuarios, consulte este tutorial: enlace

Saludos, phpbits

    
respondido por el Jeffrey Carandang 06.04.2014 - 14:14

Lea otras preguntas en las etiquetas