Mettre à jour le paramètre Data d’un script localisé dans WordPress

Publié par Jean-Michel le

Je travaille sur un thème enfant, En my-page-template.phpj’ai :

$id_curr= 5; //calculated value through code
wp_localize_script('my_js', 'ajaxload', array('post_id' => $id_curr));

Dans my_js.jsj’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_iden 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 $nameque 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;
   }
});

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *