Изменение файла JS с данными из настроек плагина
У меня есть плагин, который, помимо прочего, содержит файл javascript, требующий нескольких пользовательских настроек. Каков был бы наилучший способ перенести эти настройки в javascript из параметров настроек плагина?
Другими словами, если я сделаю эти настройки частью страницы настроек, на которой пользователь может их ввести, как мне лучше всего передать эти значения в javascript? Должен ли я использовать что-то, чтобы добавить некоторые теги скриптов и установить их через PHP на загрузка каждой страницы? Будет ли установка файла cookie лучшим способом сделать это?
2 answers
Лучше всего использовать для этого функции WP, например, для многоязычия:
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;
}
Используйте это в 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 );
} );
Также смотрите сообщение от Отто
Есть несколько способов, которыми вы могли бы это сделать, один из которых я делал раньше, другой - нет, но я использовал для файлов конфигурации XML.
Первый - включить переменные в тег сценария внутри верхнего или нижнего колонтитула WP, перед тегом сценария, в который вы включаете свой файл JS, например:
<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>
Другой альтернативой было бы включить JS в PHP-файл, который включен в тег скрипта.
<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/javascripts.php"></script>
Внутри этого файла вы будет включать ваш javascript, и поскольку PHP будет анализировать его, вы сможете включать вызовы PHP аналогично описанному выше, просто повторяя данные/параметры, которые вам требуются. Следует отметить, что вам может потребоваться установить заголовки для вывода как text/javascript
.
Лично я предпочитаю первый метод, и это то, что я использую, когда у меня есть изменяемые пользователем настройки, которые влияют на файлы javascript.