Пытаюсь слепить плагин звездного рейтинга для wp. Есть основной файл плагина с функцией draw_rating() и есть обработчик ajax-запроса при голосовании vote.php. Основной файл показывает рейтинг, vote.php должен добавлять голос в базу данных, но вместо этого он выдает ошибки и никакое global $wpdb не помогает. Что туда влепить, чтобы он заработал?
Заранее спасибо.
Разобрался. Оказывается у wp есть свой внутренний обработчик ajax-запросов. Вопрос закрыт.
Александр, да. в основном файле функция draw_rating(), которая, собственно, рисует блок рейтинга, достает голоса из таблиц и т.д. Там все работает. При клике на звезду идет запрос к файлу vote.php :
Я бы делал так:
1. Записал бы user_ip и post_id в атрибуты элемента (data-user, data-post), на который идет клик.
2. Считываю эти данные в js и отправляю ajax запрос.
2. Считываю эти данные в js и отправляю ajax запрос.
Там не js-файл, а php, в который дописан js-код. Проблема не в нем - запрос корректно отправляется. Сам обработчик vote.php не работает, не может использовать объект $wpdb почему-то. В основном файле плагина все работает, в дополнительном - нет. Вот я и спрашиваю, что туда нужно заинклюдить, чтобы обработчик начал считаться частью плагина, а не просто каким-то левым файлом?
Есть главный файл плагина, который в корне плагина лежит.
в него и инклудите все дополнительные файлы.
define('PLG_WP_DIR', plugin_dir_path(__FILE__));
function plg_wp_load(){
// Здесь все ваши файлы
require_once(PLG_WP_DIR.'includes/functions.php');
require_once(PLG_WP_DIR.'includes/admin.php');
}
plg_wp_load();
Александр, зачем, если они все равно не работают? Вы натолкнули меня на мысль, что я ajax-запрос отправляю не туда, куда надо. Сейчас пытаюсь поместить обработчик в основной файл в виде функции и вызывать хуком, как вы показали, но он так не вызывается вообще.