将ACF值传递至Contact Form 7下拉菜单失败求助
ACF值传递到Contact Form 7下拉菜单失败的排查要点
检查ACF字段返回值设置
确保你的ACF复选框字段的「返回值」设置为「值」或「标签和值」,而不是仅「标签」。如果只返回标签,CF7下拉菜单无法识别有效的键值结构,会导致选项为空。验证过滤函数的逻辑与上下文
确认functions.php中的过滤函数正确绑定钩子,且能获取到目标ACF字段值。示例正确写法:add_filter('wpcf7_form_tag_data_option', 'populate_cf7_dropdown', 10, 3); function populate_cf7_dropdown($options, $args, $tag) { // 匹配CF7短代码中的data标识和字段名 if ($tag->name === 'my-values' && $args['option'] === 'my_possible_values') { // 替换为你的ACF字段名,若为选项页则加第二个参数'option' $acf_values = get_field('your_acf_checkbox_field'); if ($acf_values) { foreach ($acf_values as $val) { // 处理ACF返回的数组或字符串格式 if (is_array($val)) { $options[] = ['value' => $val['value'], 'label' => $val['label']]; } else { $options[] = ['value' => $val, 'label' => $val]; } } } } return $options; }注意:如果ACF字段是在选项页中,需修改
get_field为get_field('your_acf_checkbox_field', 'option');如果是自定义帖子类型,要确保当前页面上下文是目标帖子。核对CF7短代码的一致性
确认CF7短代码[select my-values data:my_possible_values]中的my-values(字段名)和my_possible_values(data标识),与过滤函数中的$tag->name和$args['option']完全匹配,大小写也要一致。排查缓存问题
清空WordPress缓存插件(如WP Rocket、W3 Total Cache)和浏览器缓存,避免修改后的代码未生效。确认ACF字段已赋值
检查对应文章/页面的ACF复选框字段是否已选择了选项,而不是仅创建了字段但未设置内容。可以在过滤函数中添加var_dump($acf_values)调试,看是否能输出预期值。
内容的提问来源于stack exchange,提问作者Emma S
相关产品推荐
相关产品推荐

