在我的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)被重新编写。
在质疑其功能之前,此代码上是否有任何可导致此问题的内容?因为我正在做一些测试,所以创建一个用户然后删除它,然后再添加它,所以我想知道是不是因为这个。
感谢您的帮助!
答案 0 :(得分:1)
此代码应该有效。 GP Unique ID,我写的一个Gravity Forms插件,用于处理所有类型的唯一ID,以类似的方式处理它。要注意的一件事是删除条目。由于check_unique()函数正在ping条目数据库以确保生成的id是唯一的,因此删除条目将允许生成重复的ID。
答案 1 :(得分:0)
将此代码添加到您的functions.php
文件中。
创建表单并添加一个隐藏字段,并允许其动态填充(高级选项卡)。
在参数名称文本字段中输入“ 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;
}