WP。SE社区始终建议使用wp_register_script
和wp_enqueue_script
用于在主题/模板中添加脚本(同样,wp_register_style
和wp_enqueue_style
用于样式表)。
这就是我如何注册和排队我的脚本。。。
First, I add something like this in 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\');
}
then call it in a template file (say, header.php) like this
<?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 theme, 由Automatic的主题牧马人开发。和主题的标题。php直接使用前面提到的代码,即它不排队。那么,这是否意味着这是唯一的方法?
最合适的回答,由SO网友:Eugene Manuilov 整理而成
WP_Scripts
和WP_Styles
课程落后wp_enqueue_script
和wp_enqueue_style
功能。如果您看看类的实现(scripts 和styles) 然后你就会看到WP_Scripts
类不支持任何类型的条件脚本,但是!你可以看到WP_Styles
做问题是wp_enqueue_style
不允许您设置条件。
因此,我们必须做一个小小的修改:
add_filter( \'wp_enqueue_scripts\', \'wpse2345_enqueue_scripts\' );
function wpse2345_enqueue_scripts() {
wp_enqueue_style( \'mystyle\', \'url/of/my/style.css\', array(), \'1.0.0\' );
global $wp_styles;
$wp_styles->registered[\'mystyle\']->add_data( \'conditional\', \'lt IE 9\' );
}
由于所有注册的样式都存储在
registered
字段
WP_Styles
班每个注册样式都是
_WP_Dependency
类,它允许您添加额外数据。
不幸的是,这种黑客技术不适用于脚本。
Additional Information:
我实际上是在Aaron Campbell\'s Essence Theme 昨晚,他注意到他同时调用了浏览器条件脚本和样式。
/**
* @var WP_Scripts
*/
global $wp_scripts;
// Conditionally load this only for IE < 9
$wp_scripts->add_data( \'html5\', \'conditional\', \'lt IE 9\' );
/**
* @var WP_Styles
*/
global $wp_styles;
// Conditionally load this only for IE < 8
$wp_styles->add_data( \'blueprint-ie\', \'conditional\', \'lt IE 8\' );
还有一个
ticket and patch but it\'s not in core yet. 显然,如果没有补丁,条件脚本将无法工作,但需要注意的是,您可以在附加到
wp_enqueue_scripts
行动