【问题标题】:Delete Gravity Forms file attachments after submission but keep all other fields?提交后删除 Gravity Forms 文件附件但保留所有其他字段?
【发布时间】:2021-09-14 00:45:08
【问题描述】:

好的,我们在网站上有一份工作提交表格,用户需要填写表格并附上简历和求职信。出于隐私原因,我们不希望将简历和求职信保留在服务器上,所以我们一直在做的是发送带有表单提交的电子邮件,附上简历和求职信,然后将提交的内容完全删除。

这是我们一直在使用的代码,一切正常。

/**
 *
 * Target submissions from form ID  2.
 *
 * Change gform_after_submission_2 to reflect your target form ID, 
 * or use gform_after_submission to target all forms.
 * 
 */

add_action( 'gform_after_submission_2', 'remove_form_entry' );
function remove_form_entry( $entry ) {
    GFAPI::delete_entry( $entry['id'] );
}

我想知道是否有办法保留表单条目但只删除附件?

【问题讨论】:

    标签: wordpress gravity-forms-plugin gravityforms


    【解决方案1】:

    我刚刚编写了函数,经过测试,可以很好地删除简历文件。 您可以为求职信添加更多代码。

    add_filter( 'gform_after_submission_2', 'remove_form_entry', 10, 2 );
    function remove_form_entry( $entry, $form  ) {
         global $wpdb;
     
        $lead_id = $entry['id'];
        
        $meta_key = 1; //it is the uploads field id.
        
        $entry_table = $wpdb->prefix . 'gf_entry_meta'; //meta table of gravity forms
        
        $get_resume_file_statement = $wpdb->prepare( "SELECT `meta_value` FROM `$entry_table` WHERE  `meta_key` = %d AND `entry_id` = %d", $meta_key, $lead_id); 
        $meta_values_of_resume_file = $wpdb->get_col( $get_resume_file_statement ); // get uploaded csv file url
         
        $resume_url = explode('uploads', $meta_values_of_resume_file [0]); //get file url after uploads folder. It returns file url like http://localhost/g2a/wp-content/uploads/gravity_forms/3-dbbe121585c30ed9e49ec2a6803270b0/2021/07/89636498_188586552577282_8867025936109797376_n.jpg
        
        $resume_file_name = end($resume_url ); //get file url after uploads folder. value like /gravity_forms/3-dbbe121585c30ed9e49ec2a6803270b0/2021/07/89636498_188586552577282_8867025936109797376_n.jpg
    
        $upload_dir = wp_upload_dir(); //uploads dir
        
        $full_path = $upload_dir['basedir'] . $resume_file_name; //get full path of file
        wp_delete_file( $full_path ); //delete the file
        //update entry meta field value here or delete the entry meta.
    }
    

    【讨论】:

    • 嗯,解决了!惊人的。感谢您的帮助。
    • 测试了所有内容,收到了通知电子邮件,收到了电子邮件中的附件。该条目存储在数据库中,但附件被删除。喜欢它!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    相关资源
    最近更新 更多