如何将Contact Form 7多选框值以数组形式传入Google Tag Manager数据层
解决Contact Form 7多选框值在GTM数据层中合并为数组的问题
你可以通过处理event.detail.inputs字段,将同名称的多选框值合并为数组,修改后的代码如下:
document.addEventListener( 'wpcf7mailsent', function( event ) { // 临时存储字段值,键为清理后的字段名,值为对应值的数组 const fieldMap = {}; event.detail.inputs.forEach(field => { // 移除多选框名称末尾的[],统一键名 const cleanName = field.name.replace(/\[]$/, ''); if (fieldMap[cleanName]) { fieldMap[cleanName].push(field.value); } else { fieldMap[cleanName] = [field.value]; } }); // 转换为目标格式:多选字段保留[]后缀,值为数组;单值字段直接返回单个值 const formattedFields = Object.entries(fieldMap).map(([name, values]) => ({ name: values.length > 1 ? `${name}[]` : name, value: values.length > 1 ? values : values[0] })); window.dataLayer.push({ "event" : "CF7submit", "CF7formId" : event.detail.contactFormId, "CF7fields" : formattedFields }); });
代码说明:
- 遍历原始输入字段,用
fieldMap对象收集每个字段的所有值,统一处理掉多选框名称末尾的[],避免重复键名。 - 将
fieldMap转换为目标数组格式:如果字段有多个值(多选框),则给名称加回[],值保留为数组;如果只有单个值,直接返回单个值,保持和普通字段一致的格式。
处理后,多选框的输出会符合你想要的格式:
{name: "Checkboxes-Name[]", value: ["Option 1", "Option 2", "Option 3"]}
内容的提问来源于stack exchange,提问作者Stoto
相关产品推荐
相关产品推荐

