WordPress ajax не возвращает то, что я ожидал

#javascript #php #jquery #ajax #wordpress

Вопрос:

Я использую плагин snippets вместе с Elementor. У меня есть функция ajax, настроенная в виде фрагмента, подобного этому:

 add_action( 'wp_ajax_get_slug_from_id', 'get_slug_from_id' ); add_action( 'wp_ajax_nopriv_get_slug_from_id', 'get_slug_from_id' );  function get_slug_from_id() {  return url_to_postid( $_POST['slug'] );   die(); }  

И я встраиваю некоторый jQuery на страницу, чтобы попытаться получить идентификаторы сообщений, подобные этому:

 lt;scriptgt;  (function($){    $(window).on('load',function(){    $('.ee-calendar-skin--default .ee-calendar__day__event__name a').each(function(){    let slug = $(this).attr('href').match( /([^/]*)/[^/]*$/ )[1];    $.post(  wp.ajaxurl,   {  'action': 'get_slug_from_id',  'slug': slug  },   function(response) {  console.log(response);  }  );    });    });    })(jQuery); lt;/scriptgt;  

Это просто возвращает HTML-код страницы, и если я изменюсь wp.ajaxurl на '/wp-admin/admin-ajax.php' него, он просто вернется 0 .

Есть идеи, где я ошибаюсь?

Ответ №1:

В конце концов я понял это. Изменение return на echo , казалось, было решением проблемы.