Eu tenho um plugin que, entre outras coisas, tem um arquivo javascript que requer algumas configurações específicas do usuário. Qual seria a melhor maneira de obter essas configurações em javascript a partir dos parâmetros de configuração do plugin?
Em outras palavras, se eu fizer essas configurações parte da página de configurações onde o usuário pode inseri-los, como eu seria melhor conseguir esses valores em javascript? Eu teria que usar algo para anexar algumas tags de script e defini-las via PHP em cada carregamento de página? Definir um cookie seria a melhor maneira de fazer isso?
melhor é, você usa as funções de WP para isso, um exemplo para multilanguage:
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;
}
use isso no arquivo 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 );
});
Veja também o post da Otto
Existem algumas maneiras de fazer isso, uma das quais eu fiz antes, a outra que não fiz, mas usei para arquivos de configuração XML.
O primeiro é incluir as variáveis em uma tag de script dentro do cabeçalho ou rodapé WP, antes da tag de script onde você incluir seu arquivo JS, por exemplo:
<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>
A outra alternativa seria incluir o JS dentro de um arquivo PHPque está incluído dentro de uma tag de script.
<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/javascripts.php"></script>
Dentro deste arquivo você incluiria o seu javascript, e como PHP iria analisá-lo, você seria capaz de incluir PHP chamadas de forma semelhante ao acima, simplesmente fazendo eco dos dados/opções que voce requere. Uma coisa a notar é que você pode precisar definir os cabeçalhos para a saída como text/javascript
.
Pessoalmente eu prefiro muito mais o primeiro método, e é o que eu uso quando eu tenho configurações alteráveis pelo usuário que afetam arquivos javascript.