[Résolu] add_action formulaire gravity form dans un shortcode (Créer un compte)

  • WordPress :5.0.3
  • Statut : résolu
2 sujets de 1 à 2 (sur un total de 2)
  • Auteur
    Messages
  • #2247170
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    Bonjour,

    Ma configuration WP actuelle

    • Version de PHP/MySQL :
    • Thème utilisé :
    • Extensions en place :
    • Nom de l’hébergeur :
    • Adresse du site :

    Problème(s) rencontré(s) :

    Bonjour,

    Je récupère le numéro d’un formulaire gravity form grace à un shortcode

    add_shortcode( 'app-benutzer' , 'ss_get_appbenutzer' );
    function ss_get_appbenutzer($atts, $content = null){
    	global $num_formular;
    	/* Récupération du numéro du formulaire*/	
    	$atts = shortcode_atts(
    		array(
    			'num_formular' => 'NUM_formular'
    		), $atts);
    
    	$GLOBALS['num_formular'] = $atts['num_formular']; 
    
       echo 'NUM Formulaire DANS SHORTCODE ='.$num_formular;
       echo 'global SHORTCODE=' .$GLOBALS['num_formular'];
    
       $gform = "'gform_after_submission_".$num_formular."'";
       do_action($gform,$entry, $form,$num_formular );
       
    }

     

    puis je lance la récupération des données du formulaire avec la fonction suivante

    echo 'Num Formulaire Hors Fontions GLOBAL='.$GLOBALS['num_formular'];
    echo 'Num Formulaire Hors Fontions='.$num_formular;
    
    add_action('gform_after_submission_192', 'msk_gform_process_user_registration_MB', 10, 2);   
    
    
    function msk_gform_process_user_registration_MB ($entry, $form)  {
    		$firmenname = sanitize_text_field($entry['3']); 
    		$strasse = sanitize_text_field($entry['7.1']); 
    		$strasseerg = sanitize_text_field($entry['7.2']); 
    		$plz = sanitize_text_field($entry['7.3']); 
    		$stadt = sanitize_text_field($entry['7.5']); 
    		$webseite = sanitize_text_field($entry['17']); 
    		$branche = sanitize_text_field($entry['26']); 
    		$anzahl = sanitize_text_field($entry['16']); 
    		$organisation = sanitize_text_field($entry['73']); 
    		$rolle = $entry[$num_formular_.'79']; 
    		$anredehaupt = sanitize_text_field($entry['18']); 
    		$titelhaupt = sanitize_text_field($entry['37']); 
    		$nachnamehaupt = sanitize_text_field($entry['8']); 
    		$vornamehaupt = sanitize_text_field($entry['2']); 
    		$funktionhaupt = sanitize_text_field($entry['72']); 
    		$telhaupt = sanitize_text_field($entry['10']); 
    		$emailhaupt = sanitize_text_field($entry['41']); 
    	
    	echo 'PASSAGE DANS FNCTION msk_gform_process_user_registration_MB --> ok ';
    	echo 'EMAIL TEST =' .$emailhaupt;
    	
    	if (!email_exists($emailhaupt)) {
    		$user_id = wp_create_user($emailhaupt, $pass, $emailhaupt);
    	
    		wp_update_user(
    			array(
    			  'ID'          =>    $user_id,
    			  'first_name'  =>    $vornamehaupt,
    			  'last_name'   =>    $nachnamehaupt,
    			  'display_name' => $nachnamehaupt . ' ' . $vornamehaupt
    			)
    		);
    	
    		$user = new WP_User($user_id);
    		$user->set_role($rolle);
    	
    	update_user_meta( $user_id, 'firmennamen_usermitgliederMB', $firmenname );
    	update_user_meta( $user_id, 'firmenstrasse_usermitgliederMB', $strasse);
    	update_user_meta( $user_id, 'firmenPLZ_usermitgliederMB', $plz );
    	update_user_meta( $user_id, 'firmenort_usermitgliederMB', $stadt );
    	update_user_meta( $user_id, 'website_usermitgliederMB', $webseite);
    	update_user_meta( $user_id, 'branche_usermitgliederMB', $branche );
    	update_user_meta( $user_id, 'organisation_usermitgliederMB', $organisation );
    	update_user_meta( $user_id, 'anrede_usermitgliederMB', $anredehaupt);
    	update_user_meta( $user_id, 'titel_usermitgliederMB', $titelhaupt);
    	update_user_meta( $user_id, 'ansprechnam_usermitgliederMB', $nachnamehaupt );
    	update_user_meta( $user_id, 'ansprechvornam_usermitgliederMB', $vornamehaupt );
    	update_user_meta( $user_id, 'ansprechfunk_usermitgliederMB', $funktionhaupt);
    	update_user_meta( $user_id, 'ansprechetel_usermitgliederMB', $telhaupt);
    	update_user_meta( $user_id, 'ansprechemail_usermitgliederMB', $emailhaupt );
    	}
    	}

    (dans le add_action, je met le numéro de formulaire 192 imposé)

    Les résultats d’affichage sont :

    NUM Formulaire DANS SHORTCODE =192

    global SHORTCODE=192  (donc on récupère bien le numero 192 pour le numero de formulaire)

    Num Formulaire Hors Fontions GLOBAL=

    Num Formulaire Hors Fontions=    (là, le numero reste en local….. il est inconu en dehors du shortcode)

    PASSAGE DANS FNCTION msk_gform_process_user_registration_MB –> ok

    EMAIL TEST =emailhaupt@gmail.com  (il y a un passage dnas la fonction msk_gform_process_user_registration_MB car j’ai mi le numero 192 dans le add_action).

    –> CONCLUSION ICI : ça fonctionne.

     

    Maintenant, quand je mets le add_action dans le shortcode

    
    /* Shortcode pour Ansprechpartner Benutzer Marque Blanche */
    add_shortcode( 'app-benutzer' , 'ss_get_appbenutzer' );
    function ss_get_appbenutzer($atts, $content = null){
    	global $num_formular;
    	/* Récupération du numéro du formulaire*/	
    	$atts = shortcode_atts(
    		array(
    			'num_formular' => 'NUM_formular'
    		), $atts);
    
    	//$num_formular = $atts['num_formular']; 
    	$GLOBALS['num_formular'] = $atts['num_formular']; 
    
       echo 'NUM Formulaire DANS SHORTCODE ='.$num_formular;
       echo 'global SHORTCODE=' .$GLOBALS['num_formular'];
    
       $gform = "'gform_after_submission_".$num_formular."'";
       do_action($gform,$entry, $form,$num_formular );
       
       add_action('gform_after_submission_192', 'msk_gform_process_user_registration_MB', 10, 2);   
    
    }

    l’affichage est le suivant :

    NUM Formulaire DANS SHORTCODE =192

    global SHORTCODE=192

    Num Formulaire Hors Fontions GLOBAL=

    Num Formulaire Hors Fontions=

    du coup, il n’y a plus de passage dans la fonction msk_gform_process_user_registration_MB.

     

    Et je n’arrive pas à savoir pourquoi ?

    quelq’un aurait il un conseil à me donner?

    merci par avance

    TImama

     

     

     

     

     

    #2247707
    Timama
    Participant
    Chevalier WordPress
    284 contributions

    alors en fait, cela n’est pas possible car cela fait utiliser un deuxième shortcode pour un formulaire gravity form.

    La solution, qui n’a rien à voir avec la questions, est de mettre une variable cachée appelée par exemple CACHEE dnas le formulaire gravity form et que si le formulaire à ce paramètre caché , alors on fait le add_action

     

    function msk_gform_process_user_registration_MB( $entry, $form ) {
        $fields = $form['fields'];
        // Check every field in the form.
        foreach ( $fields as $field ) {
            // If our hidden field has been added to this form, process the user registration.
            if ( $field->label = 'cachee' ) {
      				// recupérer les data pour la base de données ici
    		}
    	  	} 
        }
    }
    add_action( 'gform_after_submission', 'msk_gform_process_user_registration_MB', 10, 2 );

     

    il faut noter que le problème de base est celui ci :

    <span class=”comment-copy”>J’ai un formulaire A avec le titre AAA. j’ai une page wordpress avec ce formulaire dedans.
    </span>

    Je copie ce formulaire plusieurs fois et le place dans des pages différentes.
    Une page (et un formulaire) peuvent être créer n’importe quand par des personnes qui ne peuvent pas écrire de code à chaque formulaire.
    C’est pour ça que j’ai cherché à automatisé le process….. mais mon idée de départ n’était pas bonne.

    <span class=”comment-copy”>il fallait juste ajouter un paramètre caché dans le formulaire (paramètre étant dupliqué avec le formulaire) et testé ce paramètre.
    J’essayai de passer les numéro de formulaire… masi j’ais pas du tout trouvé de solution par ce chemin…

    Résolu !
    </span>

2 sujets de 1 à 2 (sur un total de 2)
  • Vous devez être connecté pour répondre à ce sujet.