отключить удаление медиа WordPress - PullRequest
1 голос
/ 06 августа 2011

Вот то, что я пытался выяснить, как это сделать часами.

Я хочу, чтобы роль автора могла загружать контент в медиатеку из своих постов и просматривать всю медиатеку. Чего я не хочу, так это позволять роли автора удалять любые носители, даже их собственные.

Я думал об автоматическом переключении авторов на пользователя «мультимедиа» после завершения загрузки, но я надеялся, что будет более понятный способ.

Есть идеи?

Ответы [ 3 ]

1 голос
/ 11 февраля 2017

Есть ряд мест, где WordPress позволяет пользователям удалять изображения, поэтому попытка скрыть их все может быть сложной (и опасной, поскольку новый плагин или версия WordPress могут добавить другой). Тем не менее, вы можете добавить следующую функцию, чтобы предотвратить удаление и выдать ошибку (не красиво, но эффективно). Вы можете улучшить это, добавив пользовательскую возможность удаления изображений, если вы хотите более тонкий уровень контроля.

add_action('delete_attachment', 'DontDeleteMedia', 11, 1);
function DontDeleteMedia($postID)
{
    if (!current_user_can('manage_options')) {
        exit('You cannot delete media.');
    }
}
0 голосов
/ 13 июля 2013

добавьте этот код в ваш файл functions.php:

add_action('media_row_actions','users_own_attachments', 2, 1);
function users_own_attachments( $wp_query_obj ) {
    if( !current_user_can( 'delete_plugins' ) ){
        unset($wp_query_obj['delete']);
        return $wp_query_obj;
    }
}
0 голосов
/ 06 августа 2011

Нет встроенной возможности "delete_media". Я думаю, что это заключено в "delete_posts", так как загрузки рассматриваются как сообщения. (Обратите внимание, что авторы могут удалять только свои собственные сообщения и вложения.)

Добавление роли или возможности возможно, но вам придется заменить экраны администратора мультимедиа по умолчанию, где действие удаления контролируется заглушкой «delete_posts». Вы не хотите связываться с основными файлами upload.php и т. Д. Поэтому вам придется ограничить доступ к ним, а затем написать свои собственные панели для авторов. Вы, вероятно, не хотите делать это. : -)

Однако есть лучший способ. Если вы назначите загрузки администратору, когда они будут сохранены, авторы не смогут их удалить. Вы можете использовать хуки действий add_attachment и edit_attachment, чтобы изменить post_author на идентификатор администратора.

Надеюсь, это поможет.

...