The gform_require_login_pre_download filter can be used to require the user to be logged in before allowing access to the file through a download URL.
Usage
To apply this filter to all forms, use the following code:
add_filter('gform_require_login_pre_download', 'your_function_name', 10, 3);
Parameters
- $require_login (bool): Determines if the user needs to be logged in to access the file. Default is false.
- $form_id (int): The ID of the form used to upload the requested file.
- $field_id (int): The ID of the field used to upload the requested file.
More information
See Gravity Forms Docs: gform_require_login_pre_download
This filter was added in Gravity Forms 2.2.3.16.
The filter is located in GF_Download::validate_download() in includes/class-gf-download.php.
Examples
Require login for all forms
add_filter('gform_require_login_pre_download', '__return_true');
Require login for a specific form and field
add_filter('gform_require_login_pre_download', 'require_login_for_downloads', 10, 3);
function require_login_for_downloads($require_login, $form_id, $field_id) {
// Update values below to match your form and field id's
if ($form_id == '97' && $field_id == '2') {
$require_login = true;
}
return $require_login;
}
Require login for all forms and redirect to the login page
add_filter('gform_require_login_pre_download', function($require_login) {
$require_login = true;
if (!is_user_logged_in()) {
auth_redirect();
}
return $require_login;
});