WP.SE сообщество всегда рекомендуется использовать wp_register_script
и wp_enqueue_script
для добавления сценариев в тему / шаблон (а также, wp_register_style
и wp_enqueue_style
для таблиц стилей).
Вот так я регистрирую и ставлю в очередь свои скрипты ...
Сначала я добавляю что-то вроде этого в functions.php
add_action('init','wpse54189_register_script');
function wpse54189_register_script(){
//Register scripts
wp_enqueue_script( 'jquery' );
wp_register_script( 'aahan_bootstrap_transition', get_template_directory_uri().'/js/bootstrap-transition.js');
wp_register_script( 'aahan_bootstrap_carousel', get_template_directory_uri().'/js/bootstrap-carousel.js', array('aahan_bootstrap_transition'));
wp_register_script( 'wpse54189_ajax_comment', get_template_directory_uri().'/js/no-reload-comments.js');
}
затем вызвать его в файле шаблона (скажем, header.php), как это
<?php wp_enqueue_script( 'aahan_bootstrap_carousel' ); ?>
<?php wp_enqueue_script( 'wpse54189_ajax_comment' ); ?>
А теперь, если перейти к вопросу, как мне зарегистрировать и поставить в очередь «условные файлы JavaScript», которые должны распознаваться определенными браузерами? Например:
<!--[if lt IE 9]>
<script src="<?php echo get_template_directory_uri(); ?>/js/html5.js" type="text/javascript"></script>
<![endif]-->
Как мне зарегистрироваться и поставить в очередь это правильно?
PS: я использую тему Reddle , разработанную специалистами по теме в Automattic. И в header.php темы непосредственно используется только что упомянутый код, то есть он не помещен в очередь. Так значит ли это, что это единственный способ сделать это?
Ответы:
WP_Scripts
иWP_Styles
классы позадиwp_enqueue_script
иwp_enqueue_style
функции. Если вы посмотрите на реализацию классов ( скрипты и стили ), то увидите, чтоWP_Scripts
класс не поддерживает никаких условных скриптов, но! Вы можете видеть, чтоWP_Styles
делает! Проблема в том, чтоwp_enqueue_style
не позволяет настроить условие.Итак, мы должны сделать небольшой взлом:
Такой взлом становится возможным, потому что все зарегистрированные стили хранятся в
registered
полеWP_Styles
класса. Каждый из зарегистрированных стилей является объектом_WP_Dependency
класса, который позволяет добавлять дополнительные данные.К сожалению, этот хак не работает для скриптов.
Дополнительная информация: вчера
я на самом деле просматривал код в «Сущности темы» Аарона Кэмпбелла и заметил, что он вызывал условный скрипт и стиль браузера.
Существует также билет и патч, но он еще не в ядре . Очевидно, что условный скрипт не будет работать без патча, но следует отметить, что вы можете использовать метод add_data непосредственно внутри своей функции, которая присоединена к
wp_enqueue_scripts
действию.источник
Unfortunately this hack is not working for scripts.
Ох ... это отстой! Похоже, единственный путь - это так. Кстати, спасибо за взлом. :)