Файл .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 формы вешаешь асинхронную функцию.

→ Ссылка