$.ajax({
type: "POST", а проверяем if ( $method === 'POST' ) } else if ( $method === 'GET' ), это что?
Ваша задача принять и отправить принятое почтой. Чтобы ее отправить какие данные для этого обязательно нужны? Если $admin_email задается формой, то почему не проверятся заполнено ли этого поле и не просто заполнено, а действительно это адрес почты?
Наверное же эта проверка первичная, у вас же не понять для чего вот это
foreach ( $_POST as $key => $value) {
if ( $value != "" && $key != "project_name" && $key != "admin_email" && $key != "form_subject" )
что ну никак не выполняет требуемые условия.
Если клиенту определен метод оправки формы POST, то ни о каких GET и речи быть не должно, а если пришло, значит левая форма.
if($post = array_diff(array_map('trim', $_POST), [''])) {
//массив не пуст, проверяем наличие обязательных полей
//и только если они есть и корректные формируем почтовое отправление
} else {
//ошибки заполнения формы, действия
}