J'ai un plugin qui, entre autres choses, a un fichier javascript qui nécessite quelques paramètres spécifiques à l'utilisateur. Quel serait le meilleur moyen d’obtenir ces paramètres en javascript à partir des paramètres de configuration du plugin?
En d'autres termes, si je fais de ces paramètres une partie de la page des paramètres où l'utilisateur peut les entrer, comment pourrais-je le mieux obtenir ces valeurs en javascript? Devrais-je utiliser quelque chose pour ajouter des balises de script et les définir via PHP à chaque chargement de page? L'installation d'un cookie serait-elle un meilleur moyen de le faire?
mieux vaut, vous utilisez les fonctions de WP pour cela, un exemple pour multilingue:
add_action( 'admin_enqueue_scripts', 'add_scripts' );
function add_scripts($where) {
wp_localize_script( 'post2media', 'post2media_strings', $this->localize_vars() );
}
function localize_vars() {
$strings = array(
'btntext' => __( 'Link with post', INPSYDE_P2M_TEXTDOMAIN ),
'txtallnone' => __( 'Include in gallery:', INPSYDE_P2M_TEXTDOMAIN ),
'txtall' => __( 'All', INPSYDE_P2M_TEXTDOMAIN ),
'txtnone' => __( 'None', INPSYDE_P2M_TEXTDOMAIN ),
'ttlcb' => __( 'Include image in this gallery', INPSYDE_P2M_TEXTDOMAIN )
);
return $strings;
}
utilisez ceci dans le fichier js:
jQuery(function ($) {
buttonaddfunc = function() {
btntext = post2media_strings.btntext;
reg = /\d+/;
$( '.savesend > .button' ) . each( function() {
inputname = $( this ) . attr( 'name' );
number = reg . exec( inputname );
$( this ) . after( '<input type="submit" value="' + btntext + '" name="link[' + number + ']" class="button">' );
} );
$( '.describe-toggle-on' ).unbind( 'click', buttonaddfunc );
};
$( '.describe-toggle-on' ).bind( 'click', buttonaddfunc );
});
Voir aussi le post d'Otto
Vous pouvez le faire de différentes manières, l'une que j'ai déjà faite, l'autre pas, mais que j'ai utilisée pour les fichiers de configuration XML.
La première consiste à inclure les variables dans une balise de script à l'intérieur de l'en-tête ou du pied de page WP, avant la balise de script où vous incluez votre fichier JS, par exemple:
<script type="text/javascript">
var test = "<?php echo "hello world"; /* the relevant PHP code to echo the data you require */ ?>";
var slider_type = "<?php echo "nivo"; /* same again */ ?>";
</script>
<script type="text/javascript" src="<?php bloginfo("template_url"); ?>/js/your_js_here"></script>
L'autre alternative serait d'inclure le JS dans un fichier PHP qui est inclus dans une balise de script.
<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/javascripts.php"></script>
Dans ce fichier, vous devez inclure votre javascript, et comme PHP l’analyser, vous pourrez inclure PHP appels de la même manière que ci-dessus, en faisant simplement écho aux données/options vous avez besoin. Une chose à noter est que vous devrez peut-être définir les en-têtes pour la sortie en tant que text/javascript
.
Personnellement, je préfère de loin la première méthode, et c’est ce que j’utilise lorsque j’ai des paramètres modifiables par l’utilisateur qui affectent les fichiers javascript.