$.ajax({
type: "POST",
dataType: "text",
url: ajaxurl,
data: {
action: "more_news",
nonce: nonce,
offset: offset
},
success : function(data, textStatus, jqXHR){
console.log( nonce );
console.log( data );
console.log( textStatus );
}
});
La vérification de cette AJAX demande _ nonce fonctionne localement parfaitement. Comme on peut le voir ci-dessous, ma console affiche mon nonce "Awesome", puis "success".
9a91a5fdca
Awesome
success
Sur mon serveur, ma console imprime mon nonce deux fois (me prouvant ainsi qu’ils sont exactement les mêmes), puis le succès.
e2ca4eca80
e2ca4eca80
success
Je suis… confus… c'est le moins qu'on puisse dire. Comment est-ce possible? et comment puis-je le résoudre?
add_action( 'wp_ajax_more_news', 'more_news' );
add_action( 'wp_ajax_nopriv_more_news', 'more_news' );
function more_news(){
if ( !wp_verify_nonce($_POST['nonce'], 'more_news_nonce') ){
exit($_POST['nonce']);
}
echo 'Awesome';
die();
}
Le deuxième paramètre pour wp_verify_nonce()
est l'action. Cette partie ne figure pas dans votre question, mais j'imagine qu'elle devrait s'appeler comme suit:
if ( !wp_verify_nonce($_POST['nonce'], $_POST['action']) ){
cA devrait etre,
data: {
action: "more_news",
nonce: <?php echo wp_create_nonce( 'saiful_create_nonce' ); ?>,
offset: offset
},
et wp fonction
function more_news(){
if ( ! check_ajax_referer( 'saiful_create_nonce', 'nonce' ) ){
return false;
}
echo 'Awesome';
die();
}
L'action n'est-elle pas la même que celle que vous avez envoyée?
data: {
action: "more_news",
...
function more_news(){
if ( !wp_verify_nonce($_POST['nonce'], 'more_news_nonce') ){
....
Je suppose que ça devrait être
function more_news(){
if ( !wp_verify_nonce($_POST['nonce'], 'more_news') ){
....