$variations_attr = function_exists('wc_esc_json') ?
wc_esc_json($variations_json) :
_wp_specialchars($variations_json, ENT_QUOTES, 'UTF-8', true);
这段代码主要是对变量$variations_json进行转义处理,以此保证它能在 JavaScript 环境里被安全使用。
wc_esc_json函数是 WooCommerce 插件专门提供的,其用途是对 JSON 数据进行转义。
_wp_specialchars是WordPress 的内置函数,对特殊字符进行转义
为什么要对json数据进行转义呢?
在 JavaScript 里,字符串可以用单引号(’)或者双引号(”)来界定。要是 JSON 数据中包含与字符串界定符相同的引号,就会导致字符串提前结束,进而引发语法错误
未转义的情况:
var jsonStr = '{"name": "O'Reilly", "price": "10$"}';
// 实际效果:
// var jsonStr = '{"name": "O'Reilly... <- 单引号冲突,字符串提前结束
转义后的情况:
var jsonStr = '{"name": "O\'Reilly", "price": "10$"}';
// 正确解析为:
// {
// "name": "O'Reilly",
// "price": "10$"
// }