Как получить admin-ajax.php для локализации и сценариев для постановки в очередь - PullRequest
0 голосов
/ 25 июня 2019

Я не могу на всю жизнь получить какие-либо сценарии для постановки в очередь в моем файле functions.php, а также я не могу локализовать свой URL-адрес admin-ajax.php. Я включил любые css и js в их традиционные места (css в заголовке и js непосредственно перед концом тега body), и до сих пор он работал для меня, но очевидно, что файл js, который делает запрос ajax должен быть зарегистрирован в этом файле.

По сути, я пытаюсь сделать AJAX-запрос, чтобы повторно запросить в БД сообщения, относящиеся только к определенной категории на странице блога на веб-сайте клиента, и отобразить результаты без обновления.

На данный момент я просто пытаюсь, чтобы фиктивная функция обрабатывала запрос и возвращала категорию

Соответствующий код в моем файле functions.php

<?php

function register_styles_and_scripts() {
  // BOOTSTRAP CSS
  wp_enqueue_style( 'bootstrap', get_template_directory_uri() . '/css/bootstrap.min.css' );
  // MAIN CSS
  wp_enqueue_style( 'styles', get_template_directory_uri() . '/css/style.css' );
  // JQUERY
  wp_register_script('jquery', get_template_directory_uri() . '/js/jQuery.min.js', array(),'1.11.1', true);
  wp_enqueue_script('jquery');

  // BOOTSTRAP JS
  wp_register_script('bootstrap', get_template_directory_uri() . '/js/bootstrap.min.js', array('jquery'), '3.3.1', true);
  wp_enqueue_script('bootstrap');

  // MAIN JS
  wp_register_script('main', get_template_directory_uri() . '/js/main.js', array('jquery'), 'false', true);

  wp_enqueue_script('main', get_template_directory_uri() . '/js/main.js', array('jquery'), 'false', true);



  wp_enqueue_script('main');
  $localize = array(
       'ajaxurl' => admin_url('admin-ajax.php'),
       'auth' => wp_create_nonce('_check__ajax_100')
   );
   wp_localize_script( 'main', 'ajax_params', $localize);
}
add_action('wp_enqueue_scripts', 'register_styles_and_scripts');
add_action('admin_enqueue_scripts', 'register_styles_and_scripts');


// === AJAX === //
function test_ajax_function() {
  check_ajax_referer( '_check__ajax_100', 'nonce_field' );
  $cat = $_POST[ "cat" ];
    echo $cat;
    wp_die(); 
}    
add_action( 'wp_ajax_test_ajax_function', 'test_ajax_function' );
add_action( 'wp_ajax_nopriv_ test_ajax_function', 'test_ajax_function' );

?>

Я следовал многочисленным учебникам и думал, что правильно настроил локализацию, но когда я делаю вызов, ajaxurl не определен.

Мой запрос AJAX

$('.cat-item a').on("click", function(e) {
  e.preventDefault();
  var postRow = $('#postRow'),
    selectedCategory = $(this).text().trim(),
    ajaxurl = "<?php echo admin_url('admin-ajax.php') ?>";
  console.log("ajax URL: ", ajaxurl);
  postRow.animate({
    opacity: "0.5"
  });
  $.ajax({
    method: "POST",
    url: ajax_params.ajax_url,
    type: "post",
    dataType: "html",
    data: {
      "action": "test_ajax_function",
      "cat": selectedCategory,
      "security": "<?php echo wp_create_nonce('filter_posts')"
    },
    success: function(result) {
      console.log(result);
    },
    error: function(jqXHR, textStatus, errorThrown) {
      console.log("headers", jqXHR);
      console.log("textstatus: ", textStatus);
      console.log("error thrown: ", errorThrown);
      console.log("response text: ", jqXHR.responseText);
    }
  })
});

Что мне не хватает?

...