Почему не работает форма php?
maks843: не будет так шаблон работать, WordPress не понимает, что это за шаблон. Почитайте Template Hierarchy. У вас форма принудительно уходит на mail.php и передает ей данные полей через $_POST. Именно в этом файле нужно проводить обработку формы. Или же, правильнее, для самой формы action указать пустой - тогда форма будет отправлять данные на ту же страницу, где она размещена (перезагрузка страницы по сути). Далее определите, какой шаблон эта страница использует и в нем уже добавляйте обработчик, только обязательно через проверку if( isset($_POST['name']) && isset($_POST['email']) && isset($_POST['message']) ). Кстати, у вас textarea в коде формы стоит без атрибута name, каким образом вы надеетесь эти данные получать? Также, у вас поле для Subject имеет тип type="subject" - такого не существует.
Кроме того, ряд ваших IFов лучше переписать как тернарные операторы или if/else, unset делать не нужно. Ну и сами данные $_POST еще надо валидировать и фильтровать, у вас сейчас нет никакой защиты от передачи вредоносных данных.<div class="window-container fadeInDown animated">
<button class="close">Закрыть</button>
    <h1>Напишите мне письмо</h1>
            <form action="" method="post">
                <input class="first" type="text" name="name" placeholder="Имя" required><br>
                <input class="first" type="email" name="email" placeholder="Email" required><br>
                <input class="first" type="text" name="subject" placeholder="Тема"><br>
                <textarea class="input textarea" name="message" placeholder="Сообщение" required></textarea><br>
                <input type="submit" class="button" value="Отправить">
            </form>
</div>if( isset($_POST['name']) && isset($_POST['email']) && isset($_POST['message']) ) {

    $name = sanitize_text_field( $_POST['name'] );
    $email = sanitize_email( $_POST['email'] );
    $subject = ( !empty($_POST['subject']) ) ? sanitize_text_field( $_POST['subject'] ) : 'Default subject';
    $message = sanitize_text_field( $_POST['message'] );

    $to = 'your@email.com';
    $headers = 'From: ' . $name . ' <' . $email . '>' . "\r\n";
    $send = wp_mail( $to, $subject, $message, $headers ); // returns true/false

    echo ( true == $send ) ? 'Success message' : 'Error message';

}
Проверку, заполнены ли все обязательные поля, надо делать javascript'ом, плюс у вас есть атрибут required, тут уже браузер убедится, что поля заполнены. Также, не мешало бы валидировать формат email еще до отправки данных на сервер (или использовать HTML5 тип input type="email").
В общем, если честно, я не совсем понимаю, зачем вы пытаетесь вручную делать то, в чем пока еще смутно разбираетесь, вместо того, чтобы использовать один из сотни плагинов для форм обратной связи, которые уже учитывают безопасность, валидацию данных, обработку черех Ajax и тд. Если же все-таки хотите освоить эту сферу - начните последовательно изучать то, как правильно нужно работать с формами. Уроков в сети масса.
Возможно надо указать правильный путь к странице не mail.php, а к примеру /mail.php, если эта страница находится в корне сайта.