Wordpress CF7 为每次提交生成随机唯一字符串

Wordpress CF7 generate random unique string for each submision

因此,我正在尝试生成一个动态隐藏文本字段,该文本字段将在 Contact Form 7 中包含随机的字母和数字字符串。

我试过下面的代码

add_action('wpcf7_init', 'custom_code_generator');

function custom_code_generator(){
wpcf7_add_form_tag('coupon_code', 'custom_code_handler');
}

function custom_code_handler($tag){
$input_code_name = 'rand_string';

$charsList = '1234567890abcdefghijklmnopqrstuvwxyz';

$randomString = '';

for ($i=4; $i < 10; $i++){
    $randomString .= $charsList[rand(0, strlen($charsList))];
}

$finalCode = strtoupper($randomString);

$html = '<input type="hidden" name="'.$input_code_name.' "value=" '.$finalCode . ' " />';

return $html;

}

基于此方法 https://www.wpguru.com.au/generate-dynamic-tag-contact-form-7/

但是它似乎对我不起作用,我将代码添加到函数中并尝试对其进行大量编辑,但没有确定的结果。

主要思想是我需要为每个 CF7 提交一个唯一的字符串,所有提交都存储到 Wordpress 中,并将数据的副本发送到另一个数据库。

将简码 [coupon_code] 添加到邮件模板 returns 似乎根本没有任何数据通过该字段存储。

您所拥有的基本上应该有效。我通过删除一些无关的声明对您的一些代码进行了一些调整和优化,并且值周围还有额外的空格。

add_action( 'wpcf7_init', 'custom_code_generator' );

function custom_code_generator() {
    wpcf7_add_form_tag( 'coupon_code', 'custom_code_handler' );
}

function custom_code_handler() {

    $characters = '1234567890abcdefghijklmnopqrstuvwxyz';

    $random_string = '';

    for ( $i = 4; $i < 10; $i++ ) {
        $random_string .= $characters[ wp_rand( 0, strlen( $characters ) ) ];
    }
    return '<input type="hidden" name="rand_string" value="' . strtoupper( $random_string ) . '" />';
}