Hello Guys,
Hope you all are doing good.
Today we are going to discuss regarding adding the uploaded media URL into our contact form 7 email.
First of all you need to install the WordPress plugin “Contact Form 7 Database Addon – CFDB7“. Once you install this plugin. All your form submissions will be store into database including files. In the case of files upload, a reference can be stored into file system or directory.
After installing above mentioned plugin “Contact Form 7 Database Addon – CFDB7“. We going to use following code to add the uploaded media file URL to the email sent on contact form 7 submission.
Email body of contact form should have some text which will get replace with the uploaded file URL. Here I am using a text “uploadedFileHere”. You can choose any text of your choice.
add_action('cfdb7_before_save', 'getUploadedFilePath'); function getUploadedFilePath($form_data){ $_SESSION['getUploadedFilePathFormData'] = isset($form_data['uploadFilecfdb7_file']) && strlen(trim($form_data['uploadFilecfdb7_file'])) > 0 ? $form_data['uploadFilecfdb7_file'] : ''; }
Replace the file text placeholder with File URL
The below code will add/replace reference text “uploadedFileHere” in email with file name the users have uploaded. This could be change into email
add_filter("wpcf7_before_send_mail", "wpcf7_get_n_change_upload_file_path"); function wpcf7_get_n_change_upload_file_path($WPCF7_ContactForm){ $uploadFileDirPath = home_url('wp-content/uploads/cfdb7_uploads/'); //Get current form $wpcf7CurrentForm = WPCF7_ContactForm::get_current(); $submission = WPCF7_Submission::get_instance(); if($submission){ $posted_data = $submission->get_posted_data(); if ( empty( $posted_data ) ){ return; } $uploadFilePath = isset($_SESSION['getUploadedFilePathFormData']) && strlen(trim($_SESSION['getUploadedFilePathFormData'])) > 0 ? '<strong>Uploaded File:</strong> <a href="'.($uploadFileDirPath.''.$_SESSION['getUploadedFilePathFormData']).'">'.$_SESSION['getUploadedFilePathFormData'].'</a>' : ''; $searchText = "uploadedFileHere"; $replaceText = $uploadFilePath; // Got e-mail text $mailBody = $wpcf7CurrentForm->prop( "mail" ); // Replace text with search text inside e-mail text $updatedMail = str_replace( $searchText, $replaceText, $mailBody ); // Set New Mail Content to set updated mail $wpcf7CurrentForm->set_properties( array( "mail" => $updatedMail ) ); return $wpcf7CurrentForm; } }
Leave a Reply