如何获取admin-ajax.php进行本地化和脚本入队

时间:2019-06-25 01:12:47

标签: php jquery ajax wordpress admin-ajax

我一辈子都无法将任何脚本放入我的functions.php文件中,也无法本地化admin-ajax.php网址。我一直在其传统位置包含任何css和js(标题和js紧接在body标签末尾之前的css),到目前为止,它对我来说一直有效,但是很明显,发出ajax请求的js文件需要在此文件中注册。

基本上,我试图在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);
    }
  })
});

我想念什么?

0 个答案:

没有答案