在Wordpress中更新本地化脚本的数据参数

时间:2015-10-20 23:53:06

标签: php ajax wordpress wordpress-plugin wordpress-theming

我正在研究儿童主题,在my-page-template.php我有:

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

my_js.js我有一个AJAX电话:

$.ajax({
   //...
   type: 'post',
   data: {
      action: 'ajax_load',
      post_id: ajaxload.post_id
   }
})

现在在functions.php,我想根据新结果编辑/更新ajaxload.post_id。有没有办法做到这一点?如果我尝试使用下面显示的相同wp_localize_script()重新调用$name,这会有效吗?

$id_new= 8; //new calculated value
wp_localize_script('my_js', 'ajaxload', array('post_id' => $id_new));  

2 个答案:

答案 0 :(得分:1)

经过深入研究,我冒昧地回答了我的问题。

Wordpress具有函数wp_send_json(),允许将响应发送回AJAX请求。此功能可以更新ajaxload.post_id

functions.php

$return = array('post_id' => $id_new);
wp_send_json($return);

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;
   }
});

答案 1 :(得分:-1)

创建一个带ID的数组。

$ids = array( 5, 8 );
foreach ( $ids as $id ) {
    wp_localize_script('my_js', 'ajaxload', array('post_id' => $id));
}