如何使用wp_add_inline_script()将ajax url添加到js?

时间:2021-04-29 作者:Marc

我通常在js脚本中使用wp\\u localize\\u脚本来启用ajax,如下所示

wp_localize_script( \'map-scripts\', \'ajax_info\', array( \'ajax_url\' => admin_url( \'admin-ajax.php\' ) ) );
但现在我发现使用wp\\u add\\u inline\\u脚本是最好的做法,我发现它更难使用。

我无法使用此方法传递数组。我尝试了以下方法,但看起来不一样:

$ajax_arr = array( \'ajax_url\' => admin_url( \'admin-ajax.php\' ) );
$ajax_json = json_encode($ajax_arr);
$ajax_info  = \'ajax_info = \'.json_encode($ajax_json).\';\';
wp_add_inline_script( \'map-scripts\', $ajax_info, \'before\' );
你知道怎么做吗?

1 个回复
最合适的回答,由SO网友:Viktor Borítás 整理而成

如果还有人需要它:

wp_add_inline_script(
  \'map-scripts\',
  \'const ajax_info = \' . json_encode(array(
      \'ajaxurl\' => admin_url(\'admin-ajax.php\'),
   )),
  \'before\'
);
但是,为了提高安全性,最好也使用nonce:

wp_add_inline_script(
  \'map-scripts\',
  \'const ajax_info = \' . json_encode(array(
      \'ajaxurl\' => admin_url(\'admin-ajax.php\'),
      \'nonce\' => wp_create_nonce(\'your_nonce_handler\'), //the more specific the better
      \'your_other_item\' => "some additional data", //etc.. 
   )),
  \'before\'
);

https://developer.wordpress.org/reference/functions/wp_add_inline_script/