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);
        }
    });

  });

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

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

Похожие вопросы