Contact Form 7 est l’une des extensions WordPress les plus populaires pour créer des formulaires. Elle est assez simple à mettre en oeuvre.

J’étais à la recherche de compléments pour cette extension et je suis tombé sur un article de Banna360 sur comment générer un numéro de séquence dynamique.

Cela permet d’avoir un numéro de référence pour retrouver un message venant d’un formulaire de support technique par exemple. Et du coup, j’ai mis cela en place sur un site d’un client avec comme référence ST0000[rand-generator].

Voici le code utilisé, il est assez simple :

function wpcf7_generate_rand_number( $wpcf7_data ) {
    $properties = $wpcf7_data->get_properties();
    $shortcode = '[rand-generator]';
    $mail = $properties['mail']['body'];
    $mail_2 = $properties['mail_2']['body'];
    
    if( preg_match( "/{$shortcode}/", $mail ) || preg_match( "/[{$shortcode}]/", $mail_2 ) ) {
        $option = 'wpcf7sg_' . $wpcf7_data->id();
        $sequence_number = (int)get_option( $option ) + 1;
        update_option( $option, $sequence_number );
        $properties['mail']['body'] = str_replace( $shortcode, $sequence_number, $mail );
        $properties['mail_2']['body'] = str_replace( $shortcode, $sequence_number, $mail_2 );
               
        $wpcf7_data->set_properties( $properties );
    }
}
add_action( 'wpcf7_before_send_mail', 'wpcf7_generate_rand_number' );

Mais il y a un hic… et oui !

Utilisé comme cela, si vous mettez le code court [rand-generator] dans le sujet des e-mails envoyés, cela ne fonctionnera pas. Pourtant, l’auteur du code spécifie bien qu’il peut l’être.

Alors comme d’habitude, j’ai creusé un peu le sujet et je vous livre le code complet qui permet aussi de mettre le code court dans le sujet de chaque e-mail ($mail et $mail_2) :

function wpcf7_generate_rand_number( $wpcf7_data ) {
    $properties = $wpcf7_data->get_properties();
    $shortcode = '[rand-generator]';
    $mail = $properties['mail']['body'];
    $mail_2 = $properties['mail_2']['body'];
    
    $subject = $properties['mail']['subject'];
    $subject2 = $properties['mail_2']['subject'];
    
    if( preg_match( "/{$shortcode}/", $mail ) || preg_match( "/[{$shortcode}]/", $mail_2 ) ) {
        $option = 'wpcf7sg_' . $wpcf7_data->id();
        $sequence_number = (int)get_option( $option ) + 1;
        update_option( $option, $sequence_number );
        $properties['mail']['body'] = str_replace( $shortcode, $sequence_number, $mail );
        $properties['mail_2']['body'] = str_replace( $shortcode, $sequence_number, $mail_2 );
        $properties['mail']['subject'] = str_replace( $shortcode, $sequence_number, $subject );
        $properties['mail_2']['subject'] = str_replace( $shortcode, $sequence_number, $subject2 );
        
        $wpcf7_data->set_properties( $properties );
    }
}
add_action( 'wpcf7_before_send_mail', 'wpcf7_generate_rand_number' );

Voilà, ce code devrait fonctionner à merveille, il suffit de le mettre dans votre fichier functions.php de votre thème.

Florent Maillefaud

Comment ajouter un numéro de séquence dynamique à CF7 1Webmaster à Sablons (Isère) / Création de sites internet WordPress.

Micro-entrepreneur depuis 2012, je vous propose la création ou la refonte de votre site internet sous WordPress et à votre image.

Que ce soit un site vitrine, un blog ou un site e-commerce pour votre entreprise ou association, laissez votre empreinte sur le web !

Abonnez-vous

Restez en contact avec moi pour recevoir mes derniers articles concernant mon activité ou mes astuces pour WordPress.

Vos données ne seront jamais exploitées par un tiers. Vous avez aussi à chaque instant la possibilité de vous désabonner

ultricies venenatis ipsum leo Aliquam eget non pulvinar elementum
Share This