重力表单创建唯一ID

时间:2016-04-11 16:49:07

标签: php wordpress gravity-forms-plugin

在我的wordpress网站上我安装了Gravity Forms。要让表单创建一个ID,我将此代码放在子主题中:

add_filter("gform_field_value_uuid", "get_unique");

function get_unique(){

$prefix = "VFI"; // update the prefix here

do {
    $unique = mt_rand();
    $unique = substr($unique, 0, 8);
    $unique = $prefix . $unique;
} while (!check_unique($unique));

return $unique;
}

function check_unique($unique) {
global $wpdb;

$table = $wpdb->prefix . 'rg_lead_detail';
$form_id = 1; // update to the form ID your unique id field belongs to
$field_id = 93; // update to the field ID your unique id is being prepopulated in
$result = $wpdb->get_var("SELECT value FROM $table WHERE form_id = '$form_id' AND field_number = '$field_id' AND value = '$unique'");

if(empty($result))
    return true;

return false;
}

此代码正常运行,并没有给我带来太多麻烦。由于我将重力形式的所有信息传递给mailchimp,我在Mailchiimp列表中注意到一些唯一ID(例如:VFI819231)被重新编写。

在质疑其功能之前,此代码上是否有任何可导致此问题的内容?因为我正在做一些测试,所以创建一个用户然后删除它,然后再添加它,所以我想知道是不是因为这个。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

此代码应该有效。 GP Unique ID,我写的一个Gravity Forms插件,用于处理所有类型的唯一ID,以类似的方式处理它。要注意的一件事是删除条目。由于check_unique()函数正在ping条目数据库以确保生成的id是唯一的,因此删除条目将允许生成重复的ID。

答案 1 :(得分:0)

  1. 将此代码添加到您的functions.php文件中。

  2. 创建表单并添加一个隐藏字段,并允许其动态填充(高级选项卡)。

  3. 在参数名称文本字段中输入“ uuid”。

    add_filter("gform_field_value_uuid", "uuid");      
    function uuid($prefix = '') {
        $chars = md5(uniqid(mt_rand(), true));
        $uuid  = substr($chars,0,8) . '-';
        $uuid .= substr($chars,8,4) . '-';
        $uuid .= substr($chars,12,4) . '-';
        $uuid .= substr($chars,16,4) . '-';
        $uuid .= substr($chars,20,12);
        return $prefix . $uuid;
    }