web-dev-qa-db-fra.com

Créer un identifiant unique qui est affiché à l'utilisateur et à l'administrateur via Ninja Forms

J'essaie de créer une documentation sur la manière de créer un identificateur unique pouvant être affiché à l'utilisateur après la soumission du formulaire et à l'administrateur qui reçoit également la soumission.

  1. Formulaire d'utilisateur soumis
  2. L'utilisateur reçoit un e-mail de confirmation avec "Votre code est 2290"
  3. L'administrateur reçoit la confirmation du formulaire "L'utilisateur s'est enregistré avec la commande X et le code 2290"

J'ai trouvé un moyen de saisir la numérotation séquentielle à partir de l'ordre de soumission, mais il doit s'agir d'un code unique pour cet utilisateur spécifique.

La seule chose que je pensais serait d’ajouter une sorte de relais de leur adresse IP et leur nom

Quelque chose comme Hashids peut convertir leur adresse IP en un petit identifiant unique, mais je ne suis vraiment pas sûr de savoir comment mettre en œuvre quelque chose d'aussi complexe.

1
Tom Hutchison

Placez ce code dans le fichier functions.php: (pour 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 );

Dans la fonction ci-dessus, vous aurez un code unique de 13 caractères dans la variable globale $uniqueCode. Ce code sera généré une seule fois, lorsque le filtre est déclenché pour la première fois. Plus d'informations sur ninja_forms_fieldfilter: here .

UPDATE: pour Ninja Forms 3.0 et versions ultérieures:

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 );
2