Mettre à jour le paramètre Data d’un script localisé dans WordPress
Je travaille sur un thème enfant, En my-page-template.php
j’ai :
$id_curr= 5; //calculated value through code
wp_localize_script('my_js', 'ajaxload', array('post_id' => $id_curr));
Dans my_js.js
j’ai un appel AJAX :
$.ajax({
//...
type: 'post',
data: {
action: 'ajax_load',
post_id: ajaxload.post_id
}
})
Maintenant dans functions.php
, je souhaite modifier/mettre à jour ajaxload.post_id
en fonction d’un nouveau résultat. Y-a-t-il un moyen de faire ça? Si j’essaie de rappeler wp_localize_script()
avec la même chose $name
que celle indiquée ci-dessous, cela fonctionnera-t-il ?
$id_new= 8; //new calculated value
wp_localize_script('my_js', 'ajaxload', array('post_id' => $id_new));
Solution n°1 trouvée
créer un tableau avec des identifiants.
$ids = array( 5, 8 );
foreach ( $ids as $id ) {
wp_localize_script('my_js', 'ajaxload', array('post_id' => $id));
}
Solution n°2 trouvée
Après une recherche approfondie, je me permets de répondre à ma question.
WordPress a la fonction wp_send_json()
qui permet de renvoyer une réponse à une requête AJAX. Cette fonction peut mettre à jour ajaxload.post_id
.
Dans functions.php
:
$return = array('post_id' => $id_new);
wp_send_json($return);
Dans my_js.js
:
$.ajax({
type: 'post',
data: {
action: 'ajax_load',
post_id: ajaxload.post_id
},
success:function(data) {
var result = $.parseJSON(data);
ajaxload.post_id = result.post_id;
}
});
0 commentaire