san_jorich
@san_jorich
Творческий кодер

Как сделать правильный ajax-запрос не в корневой файл плагина WP?

spoiler
Простите, если вопрос покажется глупым.. запутался

Здравствуйте, для диагностики 500 ответа ajax-запроса написал плагин-тест.
Когда обработчик в головном файле все работает.
Когда обработчик в файле test.php (как в примере), при локализации на admin_url( 'admin-ajax.php' ) - приходит 400 ответ
Когда обработчик в файле test.php при локализации на test.php (как в примере) - приходит 500 ответ

Как сделать правильно, чтобы обработка запроса была в отдельном файле ?
Три файла:

ajaxtest.php
<?php
/*
Plugin Name: ajaxtest
Plugin URI: (_*_)
Description: ajax test
Version: 1.0
Author URI: (_*_)
*/

include_once(plugin_dir_url( __FILE__ ) .'/test.php');

function js_ajaxtest(){
  wp_register_script('js_ajaxtest', plugins_url('/test.js', __FILE__));  wp_enqueue_script('js_ajaxtest');
  wp_localize_script( 'js_ajaxtest', 'ajaxurl', plugins_url('/test.php', __FILE__) );
}

add_action('wp_enqueue_scripts', 'js_ajaxtest');
add_action('admin_enqueue_scripts', 'js_ajaxtest');

function testajaxbutton(){
	$txt='<div id="ajaxtest">Тестировать аякс</div>';
	return $txt;
}
add_shortcode('testajaxbutton','testajaxbutton');

?>


test.php
<?php
function ajaxtest(){	wp_send_json('Тест удачен'); } 
add_action('wp_ajax_ajaxtest','ajaxtest');

?>


test.js
jQuery(document).ready(function(jQuery){

  jQuery(document).on('click', '#ajaxtest', function(){

    var name = 'Вася';

    jQuery.ajax({
      type: "POST",
      url: ajaxurl,
      
        data: {
            action : 'ajaxtest', 
            name : name,
            dataType: 'JSON',
            
        },
        success:function(response) {            
            jQuery( '#result' ).html( response );
            console.log(response);
        },
        error: function(xhr, textStatus, errorThrown) {
          console.log(xhr);
        }
    });

  });

});
  • Вопрос задан
  • 34 просмотра
Решения вопроса 1
OtshelnikFm
@OtshelnikFm Куратор тега WordPress
Мои работы: otshelnik-fm.ru
plugin_dir_url - Получает URL каталога (директории, папки), где находится указанный файл плагина (с закрывающем слэшем).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы