- 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 5 années et 6 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 5 années et 6 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 5 années et 6 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.