Есть ли возможность запустить Ajax, используя API WordPress, вне границ functions.php
?
Я пытался сделать, но у меня ошибка. Переносил код обратно в functions.php и всё работает...
Смысл в том, чтобы на одной странице Ajax срабатывал, а на другой - нет. А так получается, что запрос к базе происходит каждый раз, когда пользователь ходит по сайту. Будет у меня, например, 20 Ajax и все 20 сработают, хотя потребности в них нет.
Пробовал ограничивать через проверку URL, но тогда Ajax вообще не работает...
Вы можете запускать скрипт только на нужных вам страницах. Делается это примерно таким кодом в functions.php
add_action( 'wp_enqueue_scripts', 'my_scripts' );
function my_scripts() {
if ( is_page( 'home' ) ) {
wp_enqueue_script( 'my-script', 'my-script.js', array( 'jquery' ), '1.0', true );
}
}
На странице home
ваш скрипт будет запущен, а на других - нет.
Прямой ответ на ваш вопрос - да, можно запустить ajax (имея ввиду php-обработчик) вне functions.php
. Но только в тех файлах, которые загружаются при ajax. Это все файлы плагинов (и каждый более или менее сложный плагин использует ajax), файлы темы (начиная с functions.php). Но не шаблон вашей "текущей" страницы! Обработчик ajax-запроса в ядре WP ничего не знает о том, какая страница на экране у пользователя.
Поэтому ваши попытки вынести обработчик ajax вне functions.php не увенчались успехом.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Например пользователь ввел строку типа http://examplecom/page/ehdfngdfbgf
Fatal error: Uncaught Error: Call to undefined function ssh2_connect() in
помогите решить проблемуЕсть две таблицы business_departments и companies, связь hasMany
В книге "PHPОбъекты, шаблоны и методики программирования" (4-e издание), на 154-й странице есть следующий абзац: