您可以通过在PHP中的表单中放置一个隐藏字段来避免AJAX带来的痛苦,并以另一种方式实现这一点。
方法1,在插件的帮助下,我通常使用Contact Form 7动态文本扩展插件作为创建自定义CF7标记的简单途径,这仍然需要一些编码。你也可以走更远的路,只需编写自己的CF7标签,但我还没有尝试过,但我可能会对这个答案进行编辑。
有了这个插件,您可以像这样将标签放入CF7表单中:
[dynamichidden custom-reg-code “CF7_custom_reg_code”]
在CF7管理页面的电子邮件窗格中,您可以插入[自定义注册码]。
要使其正常工作,只需为自己创建一个匹配的短代码来生成字符串:
function generateRandomString($length = 10) {
return substr(str_shuffle(str_repeat($x=\'0123456789\', ceil($length/strlen($x)) )),1,$length);
}
function wpse306816_CF7_custom_reg_code() {
return date("Ymd") . generateRandomString();
}
add_shortcode(\'CF7_custom_reg_code\', \'wpse306816_CF7_custom_reg_code\');
帽尖至
https://stackoverflow.com/a/13212994/6347850 用于生成随机数。
现在,您的表单中有一个隐藏字段,由当前日期和随机数组成,您可以在表单的发送电子邮件中使用该字段,也可以像其他CF7字段一样保存在Flamingo中。
方法2,没有插件的帮助,一点研究表明,只需编写自己的CF7标签,而不必使用插件,就更容易了。
创建CF7标记[serial]
, 您可以使用wpcf7_add_form_tag()
在wpcf7_init
操作挂钩,传递标记的名称和回调函数的名称来处理它:
add_action( \'wpcf7_init\', \'wpse306816_CF7_add_custom_tag\' );
function wpse306816_CF7_add_custom_tag() {
wpcf7_add_form_tag(
\'serial\',
\'wpse306816_CF7_handle_custom_tag\' );
}
对于您的情况,回调只需返回串行字符串值:
function generateRandomString($length = 10) {
return substr(str_shuffle(str_repeat($x=\'0123456789\', ceil($length/strlen($x)) )),1,$length);
}
function wpse306816_CF7_handle_custom_tag( $tag ) {
return date("Ymd") . generateRandomString();
}