Entonces, estoy configurando una llamada AJAX en Wordpress en el front-end y encontré wp_create_nonce('wp_rest') . Leí algunas cosas al respecto, pero no puedo entender su uso, ya que simplemente no puedo usarlo y todavía funciona perfectamente bien. ¿Alguien puede explicarme cómo funciona y tal vez decirme si estoy haciendo algo mal? También, al final, me gustaría tener mi ruta REST personalizada para que solo mi sistema pueda acceder y no llamando a la URL REST manualmente y también para invitados y usuarios registrados. ¿Pero afaik para eso están los Nonces?
Mi código PHP:
add_action('wp_enqueue_scripts', 'enqueue_scripts'); function enqueue_scripts(){ wp_enqueue_script( 'ajax-script', plugins_url( 'custom.js', __FILE__ ), array('jquery'), false, true ); // in JavaScript, object properties are accessed as ajax_object.ajax_url wp_localize_script( 'ajax-script', 'ajax_object', array( 'restURL' => rest_url(), 'restNonce' => wp_create_nonce('wp_rest') )); } add_action('rest_api_init', function(){ register_rest_route('wc/v3/', '/updateCartData/', array( 'methods' => 'GET', 'callback' => 'restAPI_updateData_callback' )); }); function restAPI_updateData_callback(){ $response = array(); array_push($response, $_GET['test_data']); echo json_encode($response); // Genutzt um die Kontrolle zurück an den AJAX Call zu geben (notwendig?) // Siehe: https://anhkarppinen.com/die-and-wp-die-wordpress/ die; }Mi código JS/AJAX:
function updateData(){ $.ajax({ type: 'GET', url: ajax_object.restURL + 'wc/v3/updateCartData', beforeSend: function(xhr){ xhr.setRequestHeader('X-WP-Nonce', ajax_object.restNonce); }, data: { 'test_data': 'test' }, success: function (response) { if(response){ alert(response); } }, permission_callback: '__return_true' }); }El Método JS se llama así dentro del Carrito de Woocommerce:
<input id="user" type="number" step="1" min="1" max="5" value="1" title="Benutzeranzahl" size="4" placeholder="1" inputmode="numeric" autocomplete="off" onchange="updateData()">