- WordPress :5.0.3
- Statut : résolu
- Ce sujet contient 1 réponse, 1 participant et a été mis à jour pour la dernière fois par
Timama, le il y a 4 années et 7 mois.
-
AuteurMessages
-
18 février 2019 à 10 h 21 min #2247170
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
20 février 2019 à 16 h 42 min #2247707alors 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> -
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.