Как запретить удаление и редактирование медиафайлов в вордпресс?
У меня стоит плагин User Role Editor в котором я для пользователей с правами "Автор" разрешил загрузку медиафайлов.
Допустим автор пишет пост, вставляет туда медиафайл. После этого отправляет пост админу на утверждение. После того как админ опубликует данный пост, то пользователь с правами "Автор" не может этот пост редактировать или удалять (в моём случае).
Однако, если он зайдет в медиа, то у него открыты права на редактирование и удаление медиа, которые привязаны к этому уже опубликованному посту. В плагинах ролей такой функции на ограничение нет. Т.е. я хочу обезопасить себя от авторов, которые, после получения оплаты за статью могут напакостить и удалить фото, которые они загружали к публикации. Надеюсь смысл моей задумки понятен.
Как в functions.php ограничить права "Автора" (или всех кроме админа) на редактирование и удаление медиа, которые привязаны к уже опубликованному посту?
Спасибо.
https://stackoverflow.com/questions/25894288/wordpress-remove-attachment-fields - здесь есть пример как удалять поля, в вашем случае надо удалить поле Delete Permanуntly для всех картинок, кроме тех, которые не прикреплены к постам.
Вам надо сформировать массив с id картинок которые можно редактировать и удалять и затем внутри темплейта надо делать проверку отображать поле или нет.
Я так вижу решение вашей проблемы.
Нет, вариант с неприкрепленными фото не годится. Все фото в данном случае прикрепляются автоматически при загрузке внутри оформления публикации.
идея хорошая почистить
от "Delete Permanуntly"
но остается поправить права в множественном удалении медиа, мне чисто 99% повезло - так ответы никогда не находил - единственное нужно оформить достойно , на JS - чтоб странички не обновлялись в лишний раз (JS b тонкости программирования я не знаю), но код ниже выручает частично
понравился вопрос
1 - ищите по английский - наши практически ничего не предлагаю кроме плагинов, и практически не нахожу новой инфы, кроме текущего сайта
2 - ищу в гугл по "remove capability to delete attachments wordpress"
вот подвижки
есть код - только что протестил - его нужно дополнить и поправить - а так же добавить идею автора выше (а также почитать про роли)
A) Запрещаем удалять
в итоге создать пару условий,
1 - вообще есть ли доступ к редактированию медиа
2 - медиа является прикрепленным (если не прикреплено то походу можно удалить)
3 - медиа загружено пользователем его создавшим
4 - пост к которому прикреплено медиа опубликован или нет
5 - ....
думаю это минимальный перечень
Б) Отключаем кнопку "Удалить навсегда"
1 - лезим в "ашсайт.ком/wp-includes/media-template.php"
2 - находим "Delete Permanуntly"
3 - обрамляем условием: выставляем роли пользователей и фильтры (опубликовано или нет, привязано к посту и тд.) для отображения кнопки
это первые подвижки - код работает - на удивление - когда дойду до этапа заказа статей на сайте, обязательно внедрю
код конечно слабый, но когда нет времени и денег на хороший, то приходится пользоваться тем что есть.
Пункт "Б" будет менее рационален ввиду дальнейших обновлений движка сайта. Из написанного Вами пункта "А" нужно взять лишь условие №4, поскольку все остальные успешно проверяются и выполняются плагином "User Role Editor".
Код, который Вы написали только лишь проверяет роли, но вот как его допилить на проверку "пост к которому прикреплено медиа опубликован или нет" - если опубликован, то запретить редактирование и удаление привязанных к нему фото.
Я, к сожалению, не силен в этом. Есть базовые знания и понимание того, как это должно примерно работать, но в данном случае их не хватает. Да и в сети нет никакой информации..
Попробуйте так - может получится
единственное плохо то что через медиа можно открепить файл и потом удалить
Попробовал. К сожалению, не работает.
дело в том что у меня работает, скорее всего плагин перехватывает какието действия
Пробовал с отключенным плагином. Работает.
Подскажите, а как сделать, чтобы по той же аналогии был запрет на редактирование медиафайлов?