Почему функции wordpress не работают в mail.php?

197
22 февраля 2018, 15:41

Сайт на wordpress. Отправка почты через ajax в таком виде работает:

<?php 
 
$recepient = 'admin@yandex.ru'; 
// $recepient = get_bloginfo(); // Любая функция wordpress прервет выполнение программы 
 
$siteName = 'siteName'; 
$name     = !empty($_POST['message_name'])     ? "Имя: "                 . trim($_POST['message_name'])     . "\n" : ""; 
$email    = !empty($_POST['message_email'])    ? "Email: "               . trim($_POST['message_email'])    . "\n" : ""; 
 
$pageTitle = "Заявка с сайта \"$siteName\""; 
 
$message = "$name$email"; 
 
mail( 
    $recepient, 
    $pageTitle, 
    $message, 
    "Content-type: text/plain; charset=\"utf-8\"\n From: $recepient" 
);

Но стоит раскомментировать get_bloginfo(), как функция перестает работать.

Важно: никакие функции wordpress не работают в данном файле

Я проверял echo get_bloginfo() на соседнем файле-странице и получал ожидаемый результат - все работает.

Почему это не работает в файле mail.php и как сделать так, чтобы можно было при отправке почты в данном файле брать email админа и название сайта (данные wordpress)?

Answer 1

Потому что все надо делать правильно. WordPress - довольно большая система, со своими правилами. Почитайте на русском, как надо организовывать запросы ajax в WordPress.

Вы пытаетесь обратиться к функциям ядра WordPress. А кто его инициализировал и подключал все эти функции? Никто.

ajax - всего лишь http-запрос на сервер. Вы явно там указываете свой файл, который содержит код в вашем вопросе. Веб-сервер честно отрабатывает ваш запрос и передает этот файл на исполнение php. Никто из них знать ничего не знает о том, что где-то рядом лежит WordPress, который вы имели ввиду подключить.

Делайте всё как положено, и таких проблем возникать не будет.

READ ALSO
Как сделать доп услуги в оформление заказа Битрикс?

Как сделать доп услуги в оформление заказа Битрикс?

Здравствуйте, подскажите пожалуйста, как можно реализовать функционал доп услуги (добавляется сумма 500 руб или другое значение берется из админки)...

190
Как запустить PHP несколько раз без Cron

Как запустить PHP несколько раз без Cron

Добрый вечер всем ! Столкнулся с такой задачей, что нужно запустить PHP скрипт несколько раз, но не через Cron, тк

209
Работа аутентификации Laravel через SMS

Работа аутентификации Laravel через SMS

Всем приветНужно привязать к сайту на ларавел авторизацию в личный кабинет через SMS (к слову, только она и будет использоваться, никаких прочих...

239
how do I download an attachment with a Russian name?

how do I download an attachment with a Russian name?

how do I download an attachment with a Russian name? error when filename in Russian

251