创建通过忍者表单显示给用户和管理员的唯一标识符

时间:2017-04-20 作者:Tom Hutchison

我正在尝试获取有关如何创建唯一标识符的文档,该标识符可以在表单提交后显示给用户,也可以显示给接收提交的管理员。

用户提交表单用户收到带有“您的代码为2290”的确认电子邮件管理员收到表单确认“用户已签署订单X,代码为2290”我找到了一种从提交订单中获取顺序编号的方法,但它需要是特定用户的唯一代码

我唯一想做的就是为他们的IP和名称添加某种中继

类似hashid的东西可以将其IP转换为一个小的唯一标识符,但我真的不确定如何实现如此复杂的东西,需要一些我忽略了ninja表单允许/提供的简单东西

1 个回复
最合适的回答,由SO网友:Frank P. Walentynowicz 整理而成

将此代码放入主题函数中。php:(适用于Ninja Forms 2.9.x)

function unique_code_submission( $data, $field_id ) {
    global $uniqueCode;

    if ( "string" !== gettype( $uniqueCode ) )
        $uniqueCode = uniqid();

    /* here goes your code to populate a field */

    return $data;
}
add_filter( \'ninja_forms_field\', \'unique_code_submission\', 10, 2 );
在上述函数中,您将在$uniqueCode 全局变量。当过滤器第一次触发时,此代码将只生成一次。有关的更多信息ninja_forms_field过滤器:here.

UPDATE: 对于Ninja Forms 3.0及以上版本:

function unique_code_submission( $fields ) {
    $uniqueCode = uniqid();

    /*  here goes your code to populate a field. For example:
        let\'s populate hidden field, which has key value of
        \'hidden_1492812363939\' */

    $index = 0;
    while ( 0 <= $index ) {
        ++$index;
        if ( \'hidden_1492812363939\' == $fields[ $index-1 ][ \'key\' ] ) {
            $fields[ $index-1 ][ \'value\' ] = $uniqueCode;
            $index = -1;
        }
    }

    return $fields;
}
add_filter( \'ninja_forms_display_fields\', \'unique_code_submission\', 10, 1 );

相关推荐

Testing Plugins for Multisite

我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。