在存储文件之前对通过重力表单上传的文件进行处理

时间:2019-10-09 作者:lesDev

我想更改文件(例如,将其压缩到zip)uploaded via Gravity Forms File upload field before 它们将上载到Web服务器。

您知道修改(临时)文件的任何挂钩或解决方法吗before 它被发送到并存储在Web服务器上?

(我找到了解决方法after 文件已上载,但这不是我想要的。)

1 个回复
SO网友:majick

看起来我是用这个类来做这个的:http://gravitywiz.com/rename-uploaded-files-for-gravity-form/ 并在207行之后添加了过滤器,即。

    // replace merge tags
    $form  = GFAPI::get_form( $entry[\'form_id\'] );
    $value = GFCommon::replace_variables( $value, $form, $entry, false, true, false, \'text\' );

    // MOD: add a filter here to hook into filename change
    $value = apply_filters(\'gravity_forms_upload_filename\', $value, $entry);
$value 然后将包含上载文件的完整路径,该文件可以挂接并压缩,以便您可以返回zip路径。

这是我用来加载的代码段GW_Rename_Uploaded_Files:

add_action(\'init\', \'my_forms_rename_uploads\', 11);
if (!function_exists(\'my_forms_rename_uploads\')) {
 function my_forms_rename_uploads() {
    if (!class_exists(\'GW_Rename_Uploaded_Files\')) {return;}
    $form_ids = array(
        1, // list of form IDs to load renaming class for
    );

    // --- get all file upload fields ---
    foreach ($form_ids as $form_id) {
        $upload_field_ids = array();
        $form = GFFormsModel::get_form_meta($form_id);
        if (isset($form[\'fields\'])) {
            // --- get upload field IDs ---
            foreach ($form[\'fields\'] as $field) {
                if ($field->type == \'fileupload\') {$upload_field_ids[] = $field->id;}
            }
            // --- set class arguments ---
            $args = array(
                \'form_id\' => $form_id,
                \'field_id\' => $upload_field_ids,
                \'template\' => \'{filename}\'
            );
            // --- initialize rename uploaded files class for fields ---
            new GW_Rename_Uploaded_Files($args);
        }
    }
 }
}
希望这有助于。。。

相关推荐

Custom CSS In Uploads Folder

我想知道上传文件夹中是否有自定义CSS文件。我从以前的开发人员那里继承了一个自定义主题,前端的大量样式都是从这个样式表派生出来的,它同样不在主题或插件文件夹中,而是wp-content/uploads 文件夹我正在努力找出它是如何推导出来的,但它确实存在。这是否被视为不良做法,或者是否有这样的用例?我相信之前的开发人员提到了Visual Composer或JS Composer以及编译更少的文件。。。但我对此不确定,他已经失去了联系,我想知道为什么我们要以这种方式使用样式表,因此这个问题是关于最佳实践的,