obtenir la variable php à partir des fonctions php et la faire écho dans les fichiers de modèle de thème
-
-
Voté deprès comme ** hors sujet **.Ceciest une question **programmation/PHP **,*pas * une question ** WordPress **.Close-voted as **off-topic**. This is a **programming/PHP** question, *not* a **WordPress** question.
- 1
- 2012-05-04
- Chip Bennett
-
Utilisez `global $ your_var;echo $ your_var; `ou`echo $ GLOBALS ['your_var']; `.Use `global $your_var; echo $your_var;` or `echo $GLOBALS['your_var'];`.
- 0
- 2012-05-04
- kaiser
-
3 réponses
- votes
-
- 2012-05-04
Si vousn'avezpas accès à la valeur,il s'agitprobablement d'unproblème deportée. Assurez-vous de leglobaliser d'abord:
<?php global $fb_app_id; echo $fb_app_id; ?>
Alternativement
Jene suispasfan des variablesglobales,donc l'alternative queje recommandeest d'utiliser lemécanisme defiltreintégré de WordPress. Vous ajoutez lefiltre dans votrefichier
functions.php
et l'appliquez sinécessaire.Dans
functions.php
:add_filter( 'fb_app_id', 'return_fb_app_id' ); function return_fb_app_id( $arg = '' ) { return '68366786876786'; }
Dans vosfichiers demodèle :
echo apply_filters( 'fb_app_id', '' );
Ou utilisez un crochet d'action
Dans
functions.php
add_action( 'fb_app_id', 'echo_fb_app_id' ); function echo_fb_app_id() { echo '68366786876786'; }
Dans vosfichiersmodèles:
do_action( 'fb_app_id' );
Que vous utilisiez un crochet d'action ou unfiltre dépendentièrement de vous. Je recommande unfiltre carilpeut renvoyer une valeur. C'estbeaucoupplusflexible que de simplementinjecter des appels
echo
dans votremodèle.If you don't have access to the value, it's likely a scope issue. Make sure you globalize it first:
<?php global $fb_app_id; echo $fb_app_id; ?>
Alternatively
I'm not a fan of global variables, so the alternative I recommend is using WordPress' built-in filter mechanism. You add the filter in your
functions.php
file and apply it where needed.In
functions.php
:add_filter( 'fb_app_id', 'return_fb_app_id' ); function return_fb_app_id( $arg = '' ) { return '68366786876786'; }
In your template files:
echo apply_filters( 'fb_app_id', '' );
Or use an action hook
In
functions.php
add_action( 'fb_app_id', 'echo_fb_app_id' ); function echo_fb_app_id() { echo '68366786876786'; }
In your template files:
do_action( 'fb_app_id' );
Whether you use an action hook or a filter is entirely up to you. I recommend a filter because it can return a value. This is far more flexible than just injecting
echo
calls in your template.-
Votefavorablepour laméthodebasée sur lefiltre.Beaucouppluspropre.Upvote for the filter based method. Much cleaner.
- 1
- 2016-03-03
- Rutwick Gangurde
-
- 2012-05-04
J'utiliserais les options Wordpress dans ce cas.Vouspouvez définir une optionen utilisant soit add_option () ou update_option () (probablementmieuxpour votre cas).Vous utiliseriez
update_option('fb_app_id', '68366786876786');
quelquepart dans votrefichierfunctions.php (lafonctioninit hook seraitprobablement unbonendroit).Vouspouvezensuite afficher cette option dans vosfichiers dethèmeen utilisant
echo get_option('fb_app_id');
La raisonpour laquelleje suggérerais de cettefaçon,plutôt que d'utiliser desglobals (ick) ou des hooks d'action/filtre,c'est que si vousprévoyez depublier votrethème aupublic,il serabeaucoupplusfacile de rendre
fb_app_id
une optionmodifiable dans unepage d'options dethème.I would use Wordpress options in this case. You can set an option using either add_option() or update_option() (probably better for your case). You would use
update_option('fb_app_id', '68366786876786');
somewhere in you're functions.php file (the init hook function would probably be a good place).You could then show this option in your theme files using
echo get_option('fb_app_id');
The reason I would suggest this way, rather than using globals (ick) or action/filter hooks is that if you plan on releasing your theme to the public, it will be much easier to make
fb_app_id
an editable option in a theme options page. -
- 2012-05-04
lemoyen leplus simple serait de créer simplement unefonction appelable,vousn'avezpas vraimentbesoin d'un hookici
function get_fb_app_id() { $fb_app_id = '68366786876786'; return $fb_app_id; }
et dans lemodèle:
echo get_fb_app_id();
the easiest way would be to just create a callable function, you don't really need a hook here
function get_fb_app_id() { $fb_app_id = '68366786876786'; return $fb_app_id; }
and in the template:
echo get_fb_app_id();
-
Unefonction wrapperpour renvoyer un varglobal??A wrapper function to return a global var??
- 0
- 2012-05-04
- kaiser
-
non,je ne le définiraispas surglobal,c'estpourquoije n'aipas ajouté la ligneglobale.no, i wouldn't set it to global, that's why i didn't add the global line.
- 0
- 2012-05-05
- fischi
-
D'accord.Alorspourquoin'est-cepas dans la `fonction`?Actuellement,lafonction lèverait simplement une `Erreur:indéfinie (...)`.Ok. So why isn't it inside the `function`? Currently the function would just throw an `Error: undefined (...)`.
- 0
- 2012-05-06
- kaiser
Celapeut sembler une questionidiotemaisje n'arrivepas à comprendre.
J'ai créé une variable dansmonfunctions.php -et j'essaie de lafaire écho dansmesfichiersmodèles.
Je suppose que c'est à cause de laportée.
Quelest leplus simple quoifaire écho à une variable ou créer unefonctionpourme permettre de sortir cetidentifiantfacebook dans diversfichiersmodèles.
C'est ce quej'ai actuellement dansmonfunctions.php ...
Et c'est comme ça quej'essayais d'enfaire écho ...
Toutes lesidées seraientextrêmement utiles,mercibeaucoup