Сразу код, который не работает, в конце вопрос =):
Главный файл плагина wordpress:
define('UrlPlugin', plugin_dir_path(__FILE__)); // Путь до плагина
switch ($_SERVER['REQUEST_URI']) { // Навигация по сайту
case '/vyistavit-redaktirovat-golosa':
include UrlPlugin.'addEditVote/AddEditVote.php';
break;
}
Файл AddEditVote.php:
add_action( 'wp_ajax_hello', 'say_hello' );
function say_hello() {
echo "УРАААААААААААА!";
wp_die();
}
//// при хуке действии wp_enqueue_scripts, вызываем функцияю, которая зарегистрирует JS код обработчика AJAX и выставил её после jQuery
add_action('wp_enqueue_scripts', function () {
wp_enqueue_script('ajaxAddEditVote', plugins_url('/ajaxAddEditVote.js', __FILE__), array('jquery'), null);
// До вывода JS, вызванного wp_enqueue_script, выводим JS объект с какими либо значениями
wp_localize_script('ajaxAddEditVote', 'localizePlugin', array(
'ajaxURL' => admin_url('admin-ajax.php')
));
});
JS с AJAX запросом, добавленный в предыдущем файле:
var data = {
action: 'hello',
};
jQuery.post(localizePlugin.ajaxURL, data, function (response) {
alert('Получено с сервера: ' + response);
});
Нужно:
switch
вытащить
include UrlPlugin.'addEditVote/AddEditVote.php';
И просто разместить в главном файле плагина, то всё работает, но на всех страницах сайта. Как только загоняешь в switch или if, то перестаёт работать и появляется 400 ошибка AJAX
admin-ajax.php возвращает 400, когда не определена акция.
Следовательно, ваша add_action не срабатывает. Она внутри switch. Наверняка условие в switch неправильное.
Update
Условие в switch срабатывает при первичной загрузке страницы. Запускается js файл, ajax вызов срабатывает. Всё хорошо.
Но при запросе ajax на сервер у вас в REQUEST_URI
находится admin-ajax.php
и ничто другое! Switch не срабатывает, акция не добавляется, и admin-ajax.php
возвращает вам 400. Вот такое кино.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Следовал всем возможным инструкциям в интернете, но почему-то всегда отображется только стандартная страница ошибки вебсервераВ конфиге...