我希望在之前,通过重力表单文件上传字段对文件进行修改(例如将它们压缩到zip中),然后将它们上传到the服务器。
您知道在之前修改(临时)文件之前的任何钩子或解决方法吗?
(我已经找到了一个解决方案,可以在文件上传之后执行<#>,但这不是我要找的。)
发布于 2019-10-10 02:55:59
看起来我是用这个类来完成这个任务的: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);
}
}
}
}希望能帮上忙..。
https://wordpress.stackexchange.com/questions/350101
复制相似问题