Вопрос или проблема
Я создал пользовательский шаблон страницы с функцией поиска. Эта функция поиска отображает посты, и я хочу создать кнопку под каждым постом, которая при нажатии будет отправлять электронное письмо автору поста the_author_email();
Я пытаюсь разобраться, как это сделать. Я хочу, чтобы письмо отправлялось без перезагрузки страницы. Это возможно?
Спасибо!
Вам нужно вызвать функцию JavaScript при нажатии кнопки. Она должна быть сохранена непосредственно в .php шаблоне и выглядеть следующим образом:
function SubmitData() {
var email = <?php echo get_the_author_meta('email'); ?>;
$.post("submit.php", { email: email }
}
Затем вам нужно создать PHP-скрипт, который может быть сохранен в файле submit.php (как показано выше в вашем JavaScript):
<?php
$from = "[email protected]";
$to = $_POST['email']; // это электронная почта автора
$subject = "Ваш заголовок";
$message = "Ваше сообщение (оно может содержать HTML тоже)";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=UTF-8\r\n";
$headers .= "From:" . $from;
mail($to,$subject,$message, $headers);
?>
Вы можете передавать другие переменные (например, тему или содержимое сообщения) таким же образом, как и адрес электронной почты.
Надеюсь, это поможет, дайте знать, если у вас получилось.
Ответ или решение
Конечно! Вот подробный ответ на ваш вопрос о том, как отправить электронное письмо по адресу автора поста при нажатии кнопки, не перезагружая страницу.
Шаг 1: Добавление кнопки на каждого поста
Сначала добавьте кнопку на вашу страницу шаблона, где вы отображаете посты. Она может выглядеть так:
<button class="send-email"
data-email="<?php echo esc_attr(get_the_author_meta('user_email')); ?>">
Отправить Email
</button>
Здесь мы используем data-email
, чтобы сохранить адрес электронной почты автора поста.
Шаг 2: Создание JavaScript функции
Теперь необходимо написать функцию на JavaScript, которая будет срабатывать при нажатии кнопки. Вы можете включить этот код непосредственно в ваш шаблон или подключить файл скрипта.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('.send-email').on('click', function() {
var email = $(this).data('email'); // Получаем email из data-атрибута
$.post("submit.php", { email: email }, function(response) {
alert('Email отправлен: ' + response); // Можно обработать ответ от сервера
}).fail(function() {
alert('Ошибка при отправке email.');
});
});
});
</script>
Шаг 3: Создание PHP-скрипта для обработки запроса
Теперь создайте файл submit.php
, который будет обрабатывать POST-запрос и отправлять email:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// Защита от CSRF
if (!isset($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
die('Недопустимый адрес электронной почты.');
}
$from = "noreply@example.com"; // Укажите свой адрес отправителя
$to = $_POST['email']; // Эмейл автора поста
$subject = "Ваш Заголовок";
$message = "<html><body><h1>Ваше сообщение</h1><p>Это тестовое сообщение!</p></body></html>"; // Ваше сообщение
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=UTF-8\r\n";
$headers .= "From: " . $from . "\r\n";
if (mail($to, $subject, $message, $headers)) {
echo 'Email успешно отправлен!';
} else {
echo 'Ошибка при отправке email.';
}
}
?>
Шаг 4: Настройка серверных разрешений
Убедитесь, что ваш сервер поддерживает отправку почты и настройки PHP для функции mail()
работают корректно.
Завершение
Теперь, когда вы нажимаете кнопку, JavaScript будет отправлять POST-запрос к вашему PHP-скрипту, и автору поста будет отправлено email-сообщение без перезагрузки страницы.
Если у вас возникнут дополнительные вопросы или необходима помощь по другим аспектам, не стесняйтесь обращаться!