Modificare un file JS con i dati dalle impostazioni del plugin

14 ago 2010, 22:02:03
Visualizzazioni: 2.38K
Voti: 9

Ho un plugin che, tra le altre cose, include un file javascript che richiede alcune impostazioni specifiche dell'utente. Qual è il modo migliore per ottenere queste impostazioni in javascript dai parametri delle impostazioni del plugin?

In altre parole, se rendo queste impostazioni parte della pagina delle impostazioni dove l'utente può inserirle, come potrei ottenere al meglio quei valori in javascript? Dovrei usare qualcosa per aggiungere alcuni tag script e impostarli via PHP ad ogni caricamento di pagina? Impostare un cookie sarebbe un modo migliore per farlo?

1
Commenti

Questa è una domanda davvero fantastica e una che avevo in programma di fare. Grazie per averla posta!

MikeSchinkel MikeSchinkel
15 ago 2010 00:46:34
Tutte le risposte alla domanda 2
5
10

meglio è, usi le funzioni di WP per questo, un esempio per il multilinguaggio:

    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'    => __( 'Collega con il post', INPSYDE_P2M_TEXTDOMAIN ),
                'txtallnone' => __( 'Includi nella galleria:', INPSYDE_P2M_TEXTDOMAIN ),
                'txtall'     => __( 'Tutti', INPSYDE_P2M_TEXTDOMAIN ),
                'txtnone'    => __( 'Nessuno', INPSYDE_P2M_TEXTDOMAIN ),
                'ttlcb'      => __( 'Includi immagine in questa galleria', INPSYDE_P2M_TEXTDOMAIN )
            );

        return $strings;
    }

usa questo nel file 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 );

} );

Vedi anche il post di Otto

14 ago 2010 22:43:40
Commenti

Non ho capito molto bene il tuo codice, ma ho trovato il link molto utile.

Ryan Elkins Ryan Elkins
14 ago 2010 23:26:07

Questo è davvero eccellente, grazie! Mi chiedevo da molto tempo come fare questa cosa; grazie mille! Avevo intenzione di chiederlo sulla lista wp-hackers ma non l'ho mai fatto. Grazie ancora.

MikeSchinkel MikeSchinkel
15 ago 2010 00:52:15

Puoi vedere nel mio ultimo plugin post2media (http://wordpress.org/extend/plugins/post2media/) per un esempio dal vivo del plugin; il plugin non ha molto codice sorgente e penso che sia ottimo per leggere il codice e comprendere la soluzione.

bueltge bueltge
15 ago 2010 13:01:46

Ecco un esempio più semplice che arriva alle basi (nel tuo esempio ci sono molte cose in ballo): http://www.prelovac.com/vladimir/best-practice-for-adding-javascript-code-to-wordpress-plugin

Viper007Bond Viper007Bond
17 ago 2010 05:55:13
1

Ci sono un paio di modi per farlo, uno dei quali ho già utilizzato in passato, l'altro no, ma l'ho usato per file di configurazione XML.

Il primo consiste nell'includere le variabili in un tag script all'interno dell'header o del footer di WP, prima del tag script in cui includi il tuo file JS, ad esempio:

<script type="text/javascript">
    var test = "<?php echo "hello world"; /* il codice PHP rilevante per visualizzare i dati necessari */ ?>";
    var slider_type = "<?php echo "nivo"; /* stessa cosa qui */ ?>";
</script>
<script type="text/javascript" src="<?php bloginfo("template_url"); ?>/js/your_js_here"></script>

L'altra alternativa sarebbe includere il JS all'interno di un file PHP che viene incluso dentro un tag script.

<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/javascripts.php"></script>

All'interno di questo file includeresti il tuo javascript, e poiché PHP lo elaborerebbe, potresti includere chiamate PHP in modo simile a quanto sopra, semplicemente visualizzando i dati/opzioni che ti servono. Una cosa da notare è che potresti dover impostare gli header dell'output come text/javascript.

Personalmente preferisco di gran lunga il primo metodo, ed è quello che uso quando ho impostazioni modificabili dall'utente che influiscono sui file javascript.

14 ago 2010 22:25:09
Commenti

Ottima spiegazione. È esattamente quello che ho fatto finora. D'altra parte, @bueltge ha la risposta che probabilmente stavamo tutti cercando; so che io sì.

MikeSchinkel MikeSchinkel
15 ago 2010 00:47:59