- WordPress :5.0.3
- Statut : non résolu
- Ce sujet contient 8 réponses, 2 participants et a été mis à jour pour la dernière fois par
Timama, le il y a 1 année et 11 mois.
-
AuteurMessages
-
15 février 2019 à 12 h 14 min #2246790
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,
J’ai plusieurs formulaires qui peuvent être créés à tout moment. Je ne connais pas leurs numéros par avance.
Mais je peux le récupérer. Soit $num_formular cette variable indiquant le numéro du formulaire.
J’ai une fonction qui fait référence à ce numéro de formulaire.
Le numéro est dans le nom de la fonction. Ce nom sera donc amené à varier.
J’ai essayé plusieurs chose:
1-
var mesFonctions = { "msk_gform_process_user_registration_".$num_formular : function () { } }; var fct = "msk_gform_process_user_registration_".$num_formular; mesFonctions[fct]();
mais la partie
var mesFonctions = {
est soulignée avec l’erreur “unexpected var”
2-
$functionName= 'msk_gform_process_user_registration_'.$num_formular;
mais je ne sais pas comment déclarer la fonction
function $functionName($entry, $form) { //corps de la fonction } add_action('gform_after_submission_'.$num_formular.'', 'msk_gform_process_user_registration_'.$num_formular.'', 10, 2);
j’ai l’erreur “unexpected $funtionName”.
Ce sont des fonction de wordpress.
Je ne peut donc pas changer leur nom et leur nom dépend donc du numéro de formulaire, formulaire qui peut être créé donc à tout moment et donc je ne connais pas le numéro.
Quelqu’un sait comment avoir un nom de fonction qui est dépendant d’un variable et surtout comment écrire tout ça ?
merci pour votre aide
Maïty
-
Ce sujet a été modifié le il y a 1 année et 11 mois par
Timama.
15 février 2019 à 17 h 22 min #2246834Bonjour,
Cela fait un moment que je n’ai pas mis mon nez dans du dev autour de Gravity Form mais gform_after_submission est un hook PHP, alors quele code que tu montre est plutot du JS…
15 février 2019 à 17 h 50 min #2246846bonjour..
Ah oui .. je me suis embrouillée…. merci pour cette remarque…C’est que je cherche plein de choses en même temps..
EN PHP, je n’arrive pas à passer une variable….
j’ai le code suivant maintenant
add_shortcode( 'app-benutzer' , 'ss_get_appbenutzer' ); function ss_get_appbenutzer($atts, $content = null){ /* Récupération du numéro du formulaire*/ extract(shortcode_atts(array( 'num_formular' => 'NUM_formular' ), $atts)); echo 'NUM 1 ='.$num_formular; global $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); function msk_gform_process_user_registration_MB ($entry, $form) { echo 'EMAIL TEST =' .$emailhaupt; echo 'NUM 2='.$num_formular; echo 'ID = ' .$id; };
et ça marche dans ce cas, l’affichage est le suivant.
EMAIL TEST =emailhaupt@gmail.com
NUM 2=
ID = 192
NUM 1 =192
MAis moi ce que je veux, c’est également remplacer
add_action(‘gform_after_submission_192’, ‘msk_gform_process_user_registration_MB’, 10, 2);en passant la variable $num_formular à la place du 192, comme ça
$gform = “‘gform_after_submission_”.$num_formular.”‘”;
add_action($gform, ‘msk_gform_process_user_registration_MB’, 10, 2);mais quand je fais ça , j’ai l’affichage suivant:
NUM 1 =192
EMAIL TEST =
NUM 2=
ID =c’est vide car la variable $num_formular est vide…..
j’ai essayé de la mettre en global mais cela ne fonctionne pas….
auriez vous un conseil pour cette variable ?
>merci par avance15 février 2019 à 19 h 14 min #2246852et en concaténant comme ca:
add_action(‘gform_after_submission_' . $num_formular, ‘msk_gform_process_user_registration_MB’, 10, 2);
16 février 2019 à 11 h 47 min #2246919merci pour ce conseil.
Je l’ai testé, c’est dans mon post au dessus (oui il etait long, c’était à la fin 😉 ) mais le problème c’est que $num_formular est vide est vide en dehors de la fonction
ss_get_appbenutzer
et je n’arrive pas à la passer en global car justement elle est définit dans la fonction ss_get_appbenutzer.
Et c’est pour ça que add_action ne fonctionne pas car $num_formular est vide
16 février 2019 à 12 h 26 min #2246922ook,
par contre rien ne vous empeche de faire un truc du genre
add_action( 'init', 'mafonction'); function mafonction( $atts ){ extract(shortcode_atts(array( 'num_formular' => 'NUM_formular' ), $atts)); add_action(‘gform_after_submission_' . $num_formular, ‘msk_gform_process_user_registration_MB’, 10, 2); }
Par contre, il est plutôt conseillé d’éviter extract() au profit de https://codex.wordpress.org/Function_Reference/shortcode_atts
16 février 2019 à 12 h 55 min #2246925oh merci ! je vais regarder shortcode_atts. Je ne savais pas .
J’ai pensé effectivement à inclure le add_action dans la fonction, mais cela ne fonctionne pas…
même quand je metadd_action( 'init', 'mafonction'); function mafonction( $atts ){ extract(shortcode_atts(array( 'num_formular' => 'NUM_formular' ), $atts)); add_action('gform_after_submission_192', 'msk_gform_process_user_registration_MB', 10, 2); }
le texte
‘EMAIL TEST =’
n’apparait même plus.. cela ne passe plus dans la fonctionfunction msk_gform_process_user_registration_MB
et là je ne sais pas pourquoi….c’est pour ça que j’ai mis le Add_action à l’exterieur…. et du coup j’ai un problème avec $num_formular
-
Cette réponse a été modifiée le il y a 1 année et 11 mois par
Timama.
16 février 2019 à 18 h 29 min #2246972du coup j’essaie de passer la variable $num_formular en global mais je n’y arrive pas ..
et pourtant je fait comme dans des docs que je lis.. mais rien
/* 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 ); return $GLOBALS['num_formular']; } add_action('gform_after_submission_192', 'msk_gform_process_user_registration_MB', 10, 2); echo 'Num Formulaire Hors Fontions GLOBAL='.$GLOBALS['num_formular']; echo 'Num Formulaire Hors Fontions='.$num_formular; function msk_gform_process_user_registration_MB ($entry, $form) { echo 'PASSAGE DANS FNCTION msk_gform_process_user_registration_MB --> ok '; echo 'EMAIL TEST =' .$emailhaupt; } };
ce code me donne l’affichage
NUM Formulaire DANS SHORTCODE =192
global SHORTCODE=192
Num Formulaire Hors Fontions GLOBAL= (toujours vide)
Num Formulaire Hors Fontions= (toujours vide, je n’arrive pas à passer $num_formular en global)
PASSAGE DANS FNCTION msk_gform_process_user_registration_MB –> ok (ici ça passe car j’ai laissé 192 dans le nom de la fonction )
EMAIL TEST =emailhaupt@gmail.com
merci pour vos conseils sur les globals
18 février 2019 à 10 h 06 min #2247169du coup cela n’a plus rien à voir avec la question de base…
A part que c’est impossible d’avoir
add_action('gform_after_submission_i', 'msk_gform_process_user_registration_i', 10, 2); function msk_gform_process_user_registration_i ($entry, $form) {
avec i qui varie….
merci pour votre aide
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.