Modificando un archivo JS con datos de los ajustes del plugin
Tengo un plugin que, entre otras cosas, tiene un archivo javascript que requiere algunos ajustes específicos del usuario. ¿Cuál sería la mejor manera de obtener esos ajustes en javascript desde los parámetros de configuración del plugin?
En otras palabras, si hago que esos ajustes sean parte de la página de configuración donde el usuario puede ingresarlos, ¿cómo podría obtener mejor esos valores en javascript? ¿Tendría que usar algo para agregar algunas etiquetas de script y configurarlas mediante PHP en cada carga de página? ¿Sería mejor establecer una cookie para hacer esto?

es mejor que uses las funciones de WP para esto, un ejemplo para multilenguaje:
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' => __( 'Enlazar con publicación', INPSYDE_P2M_TEXTDOMAIN ),
'txtallnone' => __( 'Incluir en galería:', INPSYDE_P2M_TEXTDOMAIN ),
'txtall' => __( 'Todos', INPSYDE_P2M_TEXTDOMAIN ),
'txtnone' => __( 'Ninguno', INPSYDE_P2M_TEXTDOMAIN ),
'ttlcb' => __( 'Incluir imagen en esta galería', INPSYDE_P2M_TEXTDOMAIN )
);
return $strings;
}
usa 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 revisa la publicación de Otto

¡Esto es realmente excelente, gracias! Llevaba mucho tiempo preguntándome cómo hacer esto; ¡gracias! Había querido preguntarlo en la lista wp-hackers pero nunca lo hice. Gracias de nuevo.

Puedes ver en mi último plugin post2media (http://wordpress.org/extend/plugins/post2media/) para ver un ejemplo en un plugin en vivo; el plugin no tiene mucho código fuente y creo que es genial para leer el código y entender la solución.

Aquí tienes un ejemplo más simple que reduce todo a lo básico (tu ejemplo tiene muchas cosas): http://www.prelovac.com/vladimir/best-practice-for-adding-javascript-code-to-wordpress-plugin

Como el enlace está roto, aquí está el artículo original: https://web.archive.org/web/20190422164736/http://ottopress.com/2010/dont-include-wp-load-please/ y otro muy útil: https://web.archive.org/web/20190429195119/http://ottopress.com/2010/passing-parameters-from-php-to-javascripts-in-plugins

Existen un par de formas de hacer esto, una de las cuales he usado antes, la otra no, pero la he utilizado para archivos de configuración XML.
La primera es incluir las variables en una etiqueta script dentro del encabezado o pie de página de WP, antes de la etiqueta script donde incluyes tu archivo JS, por ejemplo:
<script type="text/javascript">
var test = "<?php echo "hola mundo"; /* el código PHP relevante para mostrar los datos que necesitas */ ?>";
var slider_type = "<?php echo "nivo"; /* lo mismo de nuevo */ ?>";
</script>
<script type="text/javascript" src="<?php bloginfo("template_url"); ?>/js/tu_js_aqui"></script>
La otra alternativa sería incluir el JS dentro de un archivo PHP que se incluya dentro de una etiqueta script.
<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/javascripts.php"></script>
Dentro de este archivo incluirías tu javascript, y como PHP lo procesaría, podrías incluir llamadas PHP de manera similar a lo anterior, simplemente mostrando los datos/opciones que necesitas. Algo a tener en cuenta es que podrías necesitar establecer las cabeceras para la salida como text/javascript
.
Personalmente, prefiero mucho más el primer método, y es lo que uso cuando tengo configuraciones modificables por el usuario que afectan a archivos javascript.
