Доработка ролей пользователя Wordpress
500 руб. за проект
•
электронные деньги
Как запретить удаление и редактирование медиафайлов в вордпресс?
У меня стоит плагин User Role Editor в котором я для пользователей с правами "Автор" разрешил загрузку медиафайлов.
Допустим автор пишет пост, вставляет туда медиафайл. После этого отправляет пост админу на утверждение. После того как админ опубликует данный пост, то пользователь с правами "Автор" не может этот пост редактировать или удалять (в моём случае).
Однако, если он зайдет в медиа, то у него открыты права на редактирование и удаление медиа, которые привязаны к этому уже опубликованному посту. В плагинах ролей такой функции на ограничение нет. Т.е. я хочу обезопасить себя от авторов, которые, после получения оплаты за статью могут напакостить и удалить или отредактировать фото, которые они загружали к публикации. Надеюсь смысл моей задумки понятен.
Как в functions.php ограничить права "Автора" (или всех кроме админа) на редактирование и удаление медиа, которые привязаны к уже опубликованному посту? Также медиа уже опубликованных постов "Автор" не должен видеть в своих медиафайлах (они должны быть у него пусты).
Есть наработка, но её нужно допилить:
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('Вам запрещено это действие!');
}
}
Спасибо.
У меня стоит плагин User Role Editor в котором я для пользователей с правами "Автор" разрешил загрузку медиафайлов.
Допустим автор пишет пост, вставляет туда медиафайл. После этого отправляет пост админу на утверждение. После того как админ опубликует данный пост, то пользователь с правами "Автор" не может этот пост редактировать или удалять (в моём случае).
Однако, если он зайдет в медиа, то у него открыты права на редактирование и удаление медиа, которые привязаны к этому уже опубликованному посту. В плагинах ролей такой функции на ограничение нет. Т.е. я хочу обезопасить себя от авторов, которые, после получения оплаты за статью могут напакостить и удалить или отредактировать фото, которые они загружали к публикации. Надеюсь смысл моей задумки понятен.
Как в functions.php ограничить права "Автора" (или всех кроме админа) на редактирование и удаление медиа, которые привязаны к уже опубликованному посту? Также медиа уже опубликованных постов "Автор" не должен видеть в своих медиафайлах (они должны быть у него пусты).
Есть наработка, но её нужно допилить:
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('Вам запрещено это действие!');
}
}
Спасибо.
Отзывы
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.