Я разрабатываю плагин для клиента, который создает игру с помощью wordpress. Я пытаюсь добавить игроков в массив, относящийся к каждому wp_user. Ему требуется ajax функционал. Я новичок в ajax в wordpress, просмотрел пару руководств, прочитал несколько статей и придумал это решение, но при запуске получаю ошибку 400.
<?php
//plugin functions.php
defined ('ABSPATH') or die('No Direct Access!');
function ajax_scripts () {
wp_enqueue_script(
'ajax_script',
plugins_url('/assets/js/ajax_script.js',__FILE__)
);
wp_localize_script(
'ajax_script',
'ajax_globals',
[
'ajax_url' => admin_url( 'admin-ajax.php'),
'nonce' => wp_create_nonce( 'ajax_nonce')
]
);
}
add_action( 'wp_enqueue_scripts', 'ajax_scripts');
function add_player () {
global $wpdb;
check_ajax_referer('ajax_nonce');
$username = wp_get_current_user()->user_login;
$playerName = $_REQUEST;
$wpdb->insert('DATABASE_NAME', array('account_username' => $playerName, 'player_name' => $playerName));
$db_reponse = function() {
echo "<script type='text/javascript'>console.log('success')</script>";
};
wp_send_json_success($db_response, $_REQUEST);
}
add_action('wp_ajax_add_player', 'add_player');
Это ajax script
const playerForm = document.getElementById('fname');
if (contactForm) {
contactForm.addEventListener('submit', (e) => {
e.preventDefault();
console.log('this is working');
fetch('/wp-admin/admin-ajax.php', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: new URLSearchParams(new FormData(contactForm))
}).then(response => {
return response.json();
}).then( jsonReponse => {
console.log({jsonReponse});
})
})
}
Кажется, я сузил проблему до самого запроса. Я попытался вернуть вызов API из Star Wars API, если запрос был успешным, но нет go, поэтому я пришел к выводу, что это, должно быть, сама ошибка.
Вы, ребята, видите ошибку, которую я пропустил? Другой вопрос: будет ли ошибка 400, если форма отправлена без каких-либо данных?
Любая помощь будет принята с благодарностью.