it-swarm-es.com

Modificar un archivo JS con datos de la configuración del complemento

Tengo un complemento que, entre otras cosas, tiene un archivo javascript que requiere algunas configuraciones específicas del usuario. ¿Cuál sería la mejor manera de obtener esa configuración en javascript desde los parámetros de configuración del complemento?

En otras palabras, si hago que esas configuraciones sean parte de la página de configuraciones donde el usuario puede ingresarlas, ¿cómo podría obtener esos valores en javascript? ¿Tendría que usar algo para agregar algunas etiquetas de script y establecerlas a través de PHP en cada carga de página? ¿Establecer una cookie sería una mejor manera de hacer esto?

8
Ryan Elkins

mejor es que usas las funciones de WP para esto, un ejemplo para varios idiomas:

    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;
    }

usar esto en el archivo 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 );

});

También vea el post de Otto

9
bueltge

Hay un par de maneras en que puede hacer esto, una de las cuales he hecho antes, la otra no, pero la he usado para archivos de configuración XML.

La primera es incluir las variables en una etiqueta de secuencia de comandos dentro del encabezado o pie de página WP, antes de la etiqueta de secuencia de comandos donde se incluye su archivo JS, por ejemplo:

<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>

La otra alternativa sería incluir el JS dentro de un archivo PHP que se incluye dentro de una etiqueta de script.

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

Dentro de este archivo incluiría su javascript, y como PHP lo analizaría, podría incluir PHP llamadas de una manera similar a la de arriba, simplemente haciendo eco de los datos/opciones que Necesitas. Una cosa a tener en cuenta es que es posible que deba establecer los encabezados para la salida como text/javascript.

Personalmente prefiero el primer método, y es lo que uso cuando tengo configuraciones modificables por el usuario que afectan los archivos javascript.

1
nobody