如何将搜索结果div及$all_fiche内容加入Contact Form 7邮件模板?
将搜索结果变量加入Contact Form 7邮件模板的实现方法
完全可行,具体实现步骤如下:
1. 在CF7表单中添加隐藏字段
打开你的Contact Form 7表单编辑界面,添加一个用于存储搜索结果的隐藏字段:
[hidden search-results]
这里的search-results是字段名称,后续会用来绑定变量值。
2. 将$all_fiche变量传递给隐藏字段
有两种常用实现方式,选其一即可:
方式一:PHP+JS传递值
- 在主题的
functions.php文件中添加以下代码,将PHP变量传递到前端:
function pass_search_results_to_cf7() { global $all_fiche; if ( isset( $all_fiche ) && ! empty( $all_fiche ) ) { wp_enqueue_script( 'cf7-search-script', get_template_directory_uri() . '/js/cf7-search.js', array( 'jquery' ), '1.0', true ); wp_localize_script( 'cf7-search-script', 'cf7SearchData', array( 'results' => $all_fiche ) ); } } add_action( 'wp_enqueue_scripts', 'pass_search_results_to_cf7' );
- 在主题目录下创建
js/cf7-search.js文件,写入以下JS代码,将值赋值给隐藏字段:
jQuery(document).ready(function($) { if (typeof cf7SearchData !== 'undefined' && cf7SearchData.results) { $('input[name="search-results"]').val(cf7SearchData.results); } });
方式二:直接通过CF7钩子修改字段值
在主题的functions.php文件中添加以下PHP代码,直接通过钩子给隐藏字段赋值:
function set_cf7_search_results_value( $tag ) { global $all_fiche; if ( $tag->name === 'search-results' && isset( $all_fiche ) && ! empty( $all_fiche ) ) { $tag->values = array( $all_fiche ); $tag->raw_values = array( $all_fiche ); } return $tag; } add_filter( 'wpcf7_form_tag', 'set_cf7_search_results_value' );
3. 在CF7邮件模板中调用该字段
打开CF7的邮件设置界面,在邮件内容中添加[search-results]标签,即可让邮件自动显示$all_fiche中的搜索结果内容。
注意事项
- 如果
$all_fiche包含HTML格式内容,需在CF7设置中开启「使用HTML内容类型」,确保邮件能正常渲染HTML; - 确保
$all_fiche变量在上述钩子执行的上下文环境中是已定义且非空的,比如在搜索结果页面模板中提前赋值好该变量。
内容的提问来源于stack exchange,提问作者Maxime Crepin
相关产品推荐
相关产品推荐

