Потому что functions.php
и шаблоны подключаются самим движком, а в созданном вами файле WordPress не загружается.
В качестве быстрого решения можно подключить файл wp-load.php
из корневого каталога, однако этот метод имеет свои недостатки:
- Не всегда можно гарантированно определить местонахождение файла.
- Возрастает нагрузка на сервер.
Наиболее правильный вариант — отправлять запросы на стандартный обработчик wp-admin/admin-ajax.php
(он работает и для внешней части сайта), а функцию, которая должна вернуть результат, подключить к нему с помощью действий wp_ajax_*
и wp_ajax_nopriv_*
: http://codex.wordpress.org/AJAX_in_Plugins.
Cпасибо за помощь, не знал что есть стандартный функционал для ajax в WP
Наиболее правильный вариант — отправлять запросы на стандартный обработчик wp-admin/admin-ajax.php (он работает и для внешней части сайта)
Сергей, пользуясь случаем, попрошу — при возможности внести предложение разработчикам о выносе аякса из wp-admin.
Ведь не секрет, что многие хостры блокируют доступ к урлам, содержащие wp-admin
из-за чего у пользователей на фронте не работает аякс. И это не всегда сразу заметно и всем понятно. Я лично столкнулся с этим когда невозможно было отправить заказ в Вуккомерсе. Причем форма и всё остальное работало — не работала только кнопка «отправить», тк проверка полей происходит аяксом ВП. Ессно я этого не мог видеть, тк у меня она работала, (ведь как я имел доступ, пройдя хостеровские препоны), а вот обычные пользователи — нет.