Поддержка Проблемы и решения Ограниченный доступ к медиафайлам

  • Обнаружил не очень приятный сюрприз. Оказывается все пользователи, имеющие права авторов, имеют доступ к содержимому медиафайлов, вне зависимости от того, кто их загружал. Хотелось бы сделать так чтобы по умолчанию авторы видели только загруженные ими файлы.
    Как это можно сделать?

Просмотр 15 ответов — с 1 по 15 (всего 31)
  • function users_own_attachments( $wp_query_obj ) {
        global $current_user, $pagenow;
        if( !is_a( $current_user, 'WP_User') )
            return;
        if( 'upload.php' != $pagenow )
            return;
        if( !current_user_can('administrator') )
            $wp_query_obj->set('author', $current_user->id );
        return;
    }
    add_action('pre_get_posts','users_own_attachments');

    Добавить в functions.php используемой темы.

    Добавил — сайт рухнул

    А у меня работает и более того показывает файлы только авторам.
    Сколько ж можно про синтаксис php писать?
    Вставлять код надо после откр. тега <?php и до закрывающего ?>
    Отдельной строкой, не влезая в другие функции, фигурные скобки и прочее.
    Лучше в конце файла, строкой перед ?>
    Теперь надо править файл по ftp, в редакторе, например, akelpad, не забудьте сохранить файл в кодировке UTF-8 без метки BOM.

    Учел «перед ?>» работоспособность сайта сохранилась, но отображение медиафайлов все равно доступно всем, имеющим вход в админ панель.

    Кое-что изменилось. Сейчас при попытке посмотреть медиафайлы получаю вот это:

    Веб-узел не может отобразить страницу
     HTTP 500
       Возможные причины:
    •Веб-узел находится в состоянии обслуживания.
    •Программа веб-узла содержит ошибку.
    
       Попробуйте сделать следующее:
         Обновите страницу. 
    
         Перейдите на предыдущую страницу. 
    
         Подробнее 
    
    Эта ошибка (HTTP 500 Internal Server Error) означает, что на веб-узле произошла внутренняя ошибка, которая не позволяет отобразить веб-страницу.
    Дополнительные сведения об ошибках HTTP можно найти в справке.

    При этом загружать файлы могу. Т.е. меню: «Добавить файл» работает, а «Библиотека» нет.

    Не знаю, что и сказать. У меня (3.3.1) работает. Попробуйте вернуть исходный файл functions.php

    начинаются странности, убрал этот код, а ситуация не изменилась

    ситуация изменилась когда пользователю изменил права с автора на администратора. Сечас этот пользователь может иметь доступ к странице с медиа.

    вернуд снова права автора и доступ к странице исчез. В «хроме» описание ошибки такое: Ошибка 139 (net::ERR_TEMPORARILY_THROTTLED): Запросы к серверу временно приостановлены.

    Верните исходный файл functions.php (из дистрибутива), если Вы его до этого случая не редактировали. Возможно, Вы сделали какую-то ошибку при редактировании.
    Работает и с редактором, и с автором. Здесь несколько вариантов решения.

    спасибо

    Неужели получилось? 🙂

    нет, больше не пытался, все восстановил из бэкапа. Думаю, разработчикам имеет смысл уделить внимание данной функции и сделать ее штатной

    Снова сделал попытку. Администратор, т.е. я делать может и просматривать библиотеку и файлы добавлять.
    Другой пользователь может только добавлять файлы, а работать с медиа-библиотекой не может. Получаю вот это :
    Веб-узел не может отобразить страницу
    HTTP 500
    Возможные причины:
    •Веб-узел находится в состоянии обслуживания.
    •Программа веб-узла содержит ошибку.

    Попробуйте сделать следующее:
    Обновите страницу.

    Перейдите на предыдущую страницу.

    Подробнее

    Отключил все плагины. Пользователю стали доступны все файлы библиотеки, в т.ч. других пользователей.

Просмотр 15 ответов — с 1 по 15 (всего 31)
  • Тема «Ограниченный доступ к медиафайлам» закрыта для новых ответов.