У меня стоит плагин User Role Editor в котором я для пользователей с правами "Автор" разрешил загрузку медиафайлов.
Допустим автор пишет пост, вставляет туда медиафайл. После этого отправляет пост админу на утверждение. После того как админ опубликует данный пост, то пользователь с правами "Автор" не может этот пост редактировать или удалять (в моём случае).
Однако, если он зайдет в медиа, то у него открыты права на редактирование и удаление медиа, которые привязаны к этому уже опубликованному посту. В плагинах ролей такой функции на ограничение нет. Т.е. я хочу обезопасить себя от авторов, которые, после получения оплаты за статью могут напакостить и удалить фото, которые они загружали к публикации. Надеюсь смысл моей задумки понятен.
Как в functions.php ограничить права "Автора" (или всех кроме админа) на редактирование и удаление медиа, которые привязаны к уже опубликованному посту?
На одном из форумов мне предложили решение, но оно не работает:
// Права доступа на удаление файлов вложеныyх в посты со статусом "Опубликовано"
add_action('delete_attachment', 'DontDeleteMedia', 11, 1);
function DontDeleteMedia($postID){
$post_image = get_post( $postID ); // инфа про изображение // получаем отсюда страницу вложения
$post_post = get_post( $post_image->post_parent ); // Инфа о странице вложения // получаем отсюда статус публикации
if (!current_user_can('manage_options') && $post_post->post_status == 'publish' && +($post_image->post_parent) !== 0 ) { // роли
exit('Дальнейшие действия с файлом по разрешению администратора');
}
}
Спасибо.