Use the following code to limit 10 upload for specific role
[php]
add_filter( ‘wp_handle_upload_prefilter’, ‘limit_uploads_for_user_roles’ );
function limit_uploads_for_user_roles( $file ) {
$user = wp_get_current_user();
// add the role you want to limit in the array
$limit_roles = array(‘contributor’);
$filtered = apply_filters( ‘limit_uploads_for_roles’, $limit_roles, $user );
if ( array_intersect( $limit_roles, $user->roles ) ) {
$upload_count = get_user_meta( $user->ID, ‘upload_count’, true ) ? : 0;
$limit = apply_filters( ‘limit_uploads_for_user_roles_limit’, 10, $user, $upload_count, $file );
if ( ( $upload_count + 1 ) > $limit ) {
$file[‘error’] = __(‘Upload limit has been reached for this account!’, ‘yourtxtdomain’);
} else {
update_user_meta( $user->ID, ‘upload_count’, $upload_count + 1 );
}
}
return $file;
}
[/php]
This action will fire when user delete attachment
[php] add_action(‘delete_attachment’, ‘decrease_limit_uploads_for_user’);function decrease_limit_uploads_for_user( $id ) {
$user = wp_get_current_user();
// add the role you want to limit in the array
$limit_roles = array(‘contributor’);
$filtered = apply_filters( ‘limit_uploads_for_roles’, $limit_roles, $user );
if ( array_intersect( $limit_roles, $user->roles ) ) {
$post = get_post( $id);
if ( $post->post_author != $user->ID ) return;
$count = get_user_meta( $user->ID, ‘upload_count’, true ) ? : 0;
if ( $count ) update_user_meta( $user->ID, ‘upload_count’, $count – 1 );
}
}
[/php]
Thanks Giuseppe