【问题标题】:How to create unique id for each form submission in contact form 7?如何为联系表单 7 中的每个表单提交创建唯一 ID?
【发布时间】:2017-06-04 17:09:36
【问题描述】:

我需要为所有在线注册活动的活动参与者提供一个唯一 ID。我想提供一个独特的 id,例如“17CONF001, 17CONF002, ...”

如何做到这一点?

为此,我在我的网站上使用contact-form-7-dynamic-text-extension 插件进行注册。

完成的工作:

我正在使用以下函数来生成票号。

/* Generate Quote Ticket */
function genTicketString() {
$length = 3;
$iclaa = "17ICLAA";
$characters = "0123456789";
for ($p = 0; $p < $length; $p++) {
    $string .= $characters[mt_rand(0, strlen($characters)-1)];
}
return $iclaa.$string;
}
add_shortcode('quoteticket', 'genTicketString');

在我的functions.php中,我已经添加了

[dynamictext ticket "quoteticket"]

在我的联系表格 7 中,并通过 css 使该字段不可见。

最后,我已将 [ticket] 添加到您的电子邮件正文中。

按照AMCD给出的解决方案。

这段代码的问题:

每次刷新都会给出不同的参考号,而它应该为每次提交的表单生成参考号。

【问题讨论】:

  • 为什么不在提交时接收表单数据的脚本中生成票号,而不是在输出表单的脚本中生成票号?
  • 如果是这样,请提供答案。我是这方面的新手......任何帮助都会很愉快......@infinigrove
  • 我对wordpress或contact-form-7不太熟悉,给你一个详细的答案。您可以发布接收表单数据并生成电子邮件的代码吗?这就是你需要做出改变的地方。
  • @infinigrove 是的...它从表单中获取数据并生成电子邮件。
  • 基本上你需要在收到数据而不是生成表单时调用genTicketString() 函数。除非您更新您的问题以包含从表单获取数据并生成电子邮件的代码,否则我无法真正给您更详细的答案。

标签: php jquery wordpress forms contact-form-7


【解决方案1】:

如果您想生成随机数作为 ID,请使用它。

define( 'CF7_COUNTER', 'cf7-counter' );

function cf7dtx_counter(){
    $length = 8;
    $characters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    for ($p = 0; $p < $length; $p++) {
        $string .= $characters[mt_rand(0, strlen($characters)-1)];
    }
    return $string;
}
add_shortcode('CF7_counter', 'cf7dtx_counter');

function cf7dtx_increment_mail_counter(){
    $val = get_option( CF7_COUNTER, 0) + 1;
    update_option(CF7_COUNTER, $val);
}
add_action('wpcf7_mail_sent', 'cf7dtx_increment_mail_counter');

然后,将此添加到您的联系表格 7

[dynamichidden Request-ID "CF7_counter"]

【讨论】:

    【解决方案2】:

    希望这会有所帮助,将此代码添加到您的 function.php 中

    //Define the key to store in the database
    define( 'CF7_COUNTER', 'cf7-counter' );
    
    //Create the shortcode which will set the value for the DTX field
    function cf7dtx_counter(){
        $kodeawal = "FJY";
        $val = get_option( CF7_COUNTER, 0) + 1;  //Increment the current count
        return $kodeawal.$val;
    }
    add_shortcode('CF7_counter', 'cf7dtx_counter');
    
    //Action performed when the mail is actually sent by CF7
    function cf7dtx_increment_mail_counter(){
        $val = get_option( CF7_COUNTER, 0) + 1; //Increment the current count
        update_option(CF7_COUNTER, $val); //Update the settings with the new count
    }
    add_action('wpcf7_mail_sent', 'cf7dtx_increment_mail_counter');
    

    然后,将此添加到您的联系表格 7

    <p>[dynamictext cf7-counter "CF7_counter"]</p>
    

    表单上的输出将是“FJY1”、“FJY2”等等

    感谢七星: http://sevenspark.com/tutorials/how-to-create-a-counter-for-contact-form-7

    【讨论】:

    • 是的,但是如果你同时用不同的浏览器打开同一个表单,每个浏览器都会有相同的编号。
    猜你喜欢
    • 1970-01-01
    • 2018-10-01
    • 1970-01-01
    • 2015-09-18
    • 2018-12-24
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    相关资源
    最近更新 更多