Я не могу на всю жизнь получить какие-либо сценарии для постановки в очередь в моем файле 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);
}
})
});
Что мне не хватает?