• Решено Nelly_Iam

    (@nelly_iam)


    Добрый день.
    Проблема такая: у меня создана страница для публикации постов с сайта, в обход админке. Надо было разрешить Участнику загружать медиафайлы. С данной проблемой на ура справился плагин Role Manager.
    НО: загружать фото через админку — без проблем, а вот через сайт никак!
    Мой друг говорит , что это баг ВП и предлагают решение:

    if (!current_user_can('edit_post')) {
    $user = new WP_User(get_current_user_id());
    $user->add_cap('edit_post');
    $user->add_cap('edit_others_pages');
    $user->add_cap('edit_published_pages');
    }

    но при таком раскладе все Участники смогут редактировать и удалять все фото, не только свои, а этого, как вы понимаете, разрешать нельзя.

    В общем, нужно чтобы на постинг со страницы не были расширенные права, как это происходит через админку. Подскажите, если это вообще возможно, как убрать эти права и какие файлы редактировать.
    Наперед большое спасибо!

Просмотр 6 ответов — с 1 по 6 (всего 6)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    А как реализована загрузка файлов через сайт?

    Автор Nelly_Iam

    (@nelly_iam)

    Сергей рада вас слышать!
    http://hollywoodpresents.ru/post-item/
    Авторизуйтесь через любую соцсеть

    Автор Nelly_Iam

    (@nelly_iam)

    вопрос решен

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Похожие задачи в багтрекере: #19817, #19834.

    http://hollywoodpresents.ru/post-item/

    Вижу форму, но не вижу, каким плагином или кодом она реализована.

    В общем случае участники вполне могут загружать файлы через сайт, вопрос в том, каким кодом обрабатывается загрузка.

    вопрос решен

    Поделитесь решением 🙂

    Поделитесь решением 🙂

    Само решение и есть старте топика:

    if (!current_user_can('edit_post')) {
    $user = new WP_User(get_current_user_id());
    $user->add_cap('edit_post');
    $user->add_cap('edit_others_pages');
    $user->add_cap('edit_published_pages');
    }

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

    Не правильное решение оказалось.. Дело всетаки в том, что без возможностей: edit_others_pages, edit_published_pages с фронтенда ни в какую не хочет грузить картинки. Поэтому пошел от обратного ))
    Коль загрузка возможна, только если у роли есть возможность редактировать страницы, тогда запретим доступ к страницам ))

    add_action( 'admin_init', 'check_user_role_post_publich', 1);
    
    function check_user_role_post_publich() {
        global $current_user;
        $user_roles = $current_user->roles;
        $user_role = array_shift($user_roles);
    
        if ($user_role!='administrator') {
            $current_post_type = get_post_type($_GET['post']);
            $screen = get_current_screen();
            if ($screen->post_type=='page'||$_GET[post_type]=='page'||$current_post_type == 'page') {
                wp_die('Вы не имеете прав!');
            }
        }
    
    }

    Вот как-то так ) Если есть более простое решение, буду благодарен за подсказку.

Просмотр 6 ответов — с 1 по 6 (всего 6)

Тема «Как разрешить загрузку файлов со страницы на сайте?» закрыта для новых ответов.