Файл .php отображается с ошибкой 404
Делаю посадку верстки на wp, хостинг выбрал Timeweb. В верстке есть форма, как раз обработчик (mail.php) для нее wp и не видит.
Не понимаю в чем ошибка. Если надо, пришлю дополнительно скрины
Код формы
<form action='mail.php' method='post' class="mt-8 max-w-lg mx-2 sm:mx-auto bg-gray-200 p-8 rounded-lg shadow-md">
<div class="mb-4">
<label for="name" class="block text-left mb-2">Имя</label>
<input type="text" id="name" name="name" class="neomorph w-full p-4" placeholder="Ваше имя" required>
</div>
<div class="mb-4">
<label for="email" class="block text-left mb-2">Почта</label>
<input type="email" id="email" name="email" class="neomorph w-full p-4" placeholder="Ваша почта" required>
</div>
<div class="mb-4">
<label for="telegram" class="block text-left mb-2">Телеграмм для связи</label>
<input type="text" id="telegram" name="telegram" class="neomorph w-full p-4" placeholder="Ваш Телеграмм" required>
</div>
<button type="submit" class="button-neomorph w-full text-slate-50">Отправить</button>
</form>
Ответы (1 шт):
Там суть такая. В файле function.php вешаешь два хука
add_action('wp_ajax_твой_хук','Имя_твоей_функции');
add_action('wp_ajax_nopriv_твой_хук','Имя_твоей_функции');
Первый для неавторизированных пользователей, второй для авторизированных.
После этого ты сможешь общаться со своей функции отправки через AJAX
Для этого в js нужно добавить функцию
async function formSend(e){
e.preventDefault();
const formData = new FormData(твоя форма);
formData.append('action','имя_хука'); // это бязательно.
const response = await fetch(wpAJAX,{
method: 'POST',
body: formData,
});
}
В переменную wpAJAX нужно запихнуть
<?=admin_url('admin-ajax.php') ?>
Потому что такая константа есть только у авторизированных пользователей. У неавторизированных нужно самому ее создавать.
Соответственно, в функцию обработки запроса суешь свою функцию обработки. И на submit формы вешаешь асинхронную функцию.