You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将wp_localize_script()传入JS的字符串转为可调用变量?

你遇到的问题核心是后端传入的拼接规则是纯字符串,JS默认不会解析字符串内的变量和运算逻辑,只会直接拼接字符串本身。可通过以下两种方案解决:

解决方案

方案1(优先推荐,无安全风险)

不要直接传递拼接表达式,调整后台自定义字段的填写规则,改为填写逗号分隔的变量名,示例:colorVariation,btnVariation。
前端将变量统一存入映射对象,遍历变量名列表取值拼接即可:

// 把所有要参与拼接的变量存入映射对象
const variationMap = {
  colorVariation: '_red',
  btnVariation: '_male'
}
// 拆分后端传入的变量名字符串
const orderFields = script_vars.order.split(',');
// 遍历取值拼接后缀
const variationSuffix = orderFields.map(field => variationMap[field]).join('');
const varId = `.variation${variationSuffix}`;

该方案完全规避了代码注入风险,无需执行动态代码,适配性更强。

方案2(保留表达式写法,需注意安全)

如果必须保留后台填写表达式的逻辑,可以用new Function动态执行传入的表达式。注意:该方案存在代码注入风险,请确保该自定义字段仅允许可信的管理员用户编辑,禁止开放给普通用户修改。
示例代码:

var colorVariation = '_red';
var btnVariation = '_male';        
var order = script_vars.order;

// 动态执行表达式获取拼接结果
var variationSuffix = new Function('colorVariation', 'btnVariation', `return ${order}`)(colorVariation, btnVariation);
var varId = '.variation' + variationSuffix;

内容的提问来源于stack exchange,提问作者Gamernamer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 04:45:03