web-dev-qa-db-fra.com

Modification d'un fichier JS avec des paramètres de plug-in

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?

8
Ryan Elkins

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

9
bueltge

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.

1
nobody