Как добавить и настроить форму обратной связи с файлом вложения на сайте в Wordpress?
Здравствуйте! У меня возникла проблема с добавлением и настройкой формы обратной связи с файлом вложения на моем сайте, который работает на WordPress. Я бы хотел, чтобы пользователи могли отправлять сообщения через эту форму, прикреплять файлы и я получал их на почту. Однако, у меня не получается реализовать это самостоятельно. Помогите, пожалуйста!
У меня уже есть готовый код формы, но я не уверен, как правильно его настроить. Привожу ниже пример кода:
<form action="" method="post" enctype="multipart/form-data">
<div>
<label for="name">Имя:</label>
<input type="text" id="name" name="name" required>
</div>
<div>
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
</div>
<div>
<label for="message">Сообщение:</label>
<textarea id="message" name="message" required></textarea>
</div>
<div>
<label for="attachment">Прикрепить файл:</label>
<input type="file" id="attachment" name="attachment">
</div>
<div>
<input type="submit" value="Отправить">
</div>
</form>
Буду очень благодарен, если вы поможете мне настроить эту форму, чтобы я мог получать сообщения с вложением на свою почту. Заранее спасибо!
Ответы:
Проблему с добавлением и настройкой формы обратной связи с файлом на вашем сайте, работающем на WordPress, можно решить следующим образом:
1. Добавьте следующий код в файл functions.php вашей темы:
function wpse27856_set_content_type(){
return "text/html";
}
add_filter( 'wp_mail_content_type','wpse27856_set_content_type' );
function wpse_form_submit(){
if( isset( $_POST['name'] ) && isset( $_POST['email'] ) && isset( $_POST['message'] ) ){
$name = sanitize_text_field( $_POST['name'] );
$email = sanitize_email( $_POST['email'] );
$message = sanitize_textarea_field( $_POST['message'] );
$to = "your-email@example.com";//Замените на вашу электронную почту
$subject = "Новое сообщение с формы обратной связи";
$headers = "From: $name ";
if( !function_exists( 'wp_handle_upload' ) ) require_once( ABSPATH . 'wp-admin/includes/file.php' );
$uploadedfile = $_FILES['attachment'];
$upload_overrides = array( 'test_form' => false );
$movefile = wp_handle_upload( $uploadedfile, $upload_overrides );
if( $movefile && !isset( $movefile['error'] ) ){
$attachments = $movefile['file'];
} else {
$attachments = '';
}
$send = wp_mail( $to, $subject, $message, $headers, $attachments );
if( $send ){
echo 'Сообщение успешно отправлено!
';
} else {
echo 'Ошибка при отправке сообщения. Пожалуйста, попробуйте еще раз.
';
}
}
}
add_action( 'wp_ajax_nopriv_wpse_form_submit', 'wpse_form_submit' );
add_action( 'wp_ajax_wpse_form_submit', 'wpse_form_submit' );
2. Внутри директории вашей темы создайте файл с именем "wpse-form.js" и добавьте в него следующий код:
jQuery(document).ready(function($){
$('form').on('submit', function(e){
e.preventDefault();
var formData = new FormData($(this)[0]);
$.ajax({
url: ajaxurl, // переменная ajaxurl доступна по умолчанию на страницах WordPress
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function(response){
$('#form-response').html(response);
}
});
});
});
3. Вставьте следующий код в вашу страницу или пост, где вы хотите отображать форму обратной связи:
<div id="form-response"></div>
<form action="" method="post" enctype="multipart/form-data">
<div>
<label for="name">Имя:</label>
<input type="text" id="name" name="name" required>
</div>
<div>
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
</div>
<div>
<label for="message">Сообщение:</label>
<textarea id="message" name="message" required></textarea>
</div>
<div>
<label for="attachment">Прикрепить файл:</label>
<input type="file" id="attachment" name="attachment">
</div>
<div>
<input type="submit" value="Отправить">
</div>
</form>
<script src="wp-content/themes/your-theme/wpse-form.js"></script>
Замените "your-email@example.com" на вашу электронную почту и "your-theme" на название вашей темы.
После выполнения этих шагов, вы должны быть в состоянии отправлять сообщения с вложениями через форму обратной связи на вашу почту. Если у вас возникнут какие-либо проблемы, пожалуйста, дайте мне знать.
Я надеюсь, что эта информация поможет вам решить вашу проблему. Удачи с вашим сайтом WordPress!
Теперь, чтобы обработать отправку формы и отправить сообщение с вложением, вам необходимо создать файл "send_email.php" и добавить следующий код:
Не забудьте заменить "ваш_электронный_адрес@example.com" на свой адрес электронной почты, на который вы хотите получать сообщения с вложением.
Этот код обрабатывает отправку формы, читает содержимое загруженного файла, кодирует его и добавляет в виде вложения к письму. Затем отправляет письмо на указанный адрес электронной почты.
Надеюсь, это поможет вам настроить форму обратной связи с вложением на вашем сайте. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать их. Удачи!