WordPress中如何在Contact Form 7传递自定义字段Job ID至邮件
解决Contact Form 7传递Toolset自定义Job ID的问题
我之前处理过类似的需求,给你两个亲测有效的解决方案,你可以根据自己的情况选择:
方案一:通过CF7短代码参数传递(无需额外代码)
你之前的第一种方法问题出在参数名的写法上,CF7短代码的参数不能有空格,而且需要在表单里对应读取这个参数。步骤如下:
- 在职位详情页的模板中,修改CF7的调用代码,把参数名改成无空格的格式(比如
job_id):
<?php echo do_shortcode( '[contact-form-7 id="983" title="contact 1" job_id="'.get_field( 'job-id' ).'"]' ); ?>
- 在Contact Form 7的表单编辑界面,修改隐藏字段为:
[hidden job-id default:job_id]
这里的default:job_id表示读取短代码中传入的job_id参数值,作为隐藏字段的默认内容。
3. 最后在CF7的邮件模板里,用[job-id]就能显示这个Job ID了。
方案二:用过滤器动态填充隐藏字段(适合需要更灵活控制的场景)
如果你的职位文章是自定义文章类型,或者需要额外判断逻辑,可以用CF7的过滤器来动态获取Job ID:
- 打开你当前主题的
functions.php文件,添加以下代码(注意替换隐藏字段名称和文章类型,如果是默认的post类型可以保留is_singular('post')):
add_filter( 'wpcf7_form_tag_data_filter', 'fill_job_id_hidden_field', 10, 2 ); function fill_job_id_hidden_field( $value, $tag ) { // 替换成你实际的隐藏字段名称 if ( 'hidden-948' == $tag->name && is_singular('post') ) { // 获取Toolset自定义的Job ID,Toolset兼容get_field函数,也可以用types_render_field('job-id', array('raw' => true)) $job_id = get_field( 'job-id' ); return $job_id ? $job_id : '无职位ID'; } return $value; }
- 在CF7表单里保持隐藏字段的设置为:
[hidden hidden-948]
- 邮件模板里用
[hidden-948]就能输出Job ID了。
为什么你之前的方法无效?
- 第一种方法里你用了
job ID="..."作为参数名,CF7无法识别带空格的参数,必须用下划线或连字符的格式; - 第二种方法里直接写
"wpcf-job-id"是静态文本,CF7不会自动解析这个自定义字段的内容,必须通过动态参数或过滤器来获取值。
内容的提问来源于stack exchange,提问作者Adarsh
相关产品推荐
相关产品推荐

