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; });