关于WordPress引入css/js方法有很多,但是如何全局加载,或仅在某些页面精准加载,什么时候需要先注册脚本再加载,本文WordPress教程希望能帮助您了解新的一种WordPress引入css/js方法,当然知道的WordPress大神就路过吧。

WordPress前台加载css/js

用wp_enqueue_script()函数加载js,用wp_enqueue_style()加载css,加载资源的位置(action)只有一个——wp_enqueue_scripts。用wp_enqueue_系列函数可以更好的处理脚本样式表的依赖关系,防止重复加载,以twentyfifteen主题为例。


function twentyfifteen_scripts() {
     
    //全局加载一般的样式表
    wp_enqueue_style( 'genericons', get_template_directory_uri() . '/genericons/genericons.css', array(), '3.2' );
 
    //全局加载主样式表
    wp_enqueue_style( 'twentyfifteen-style', get_stylesheet_uri() );
 
    //全局加载仅用于IE的样式表
    wp_enqueue_style( 'twentyfifteen-ie', get_template_directory_uri() . '/css/ie.css', array( 'twentyfifteen-style' ), '20141010' );
    wp_style_add_data( 'twentyfifteen-ie', 'conditional', 'lt IE 9' );
 
    //全局加载js脚本
    wp_enqueue_script( 'twentyfifteen-script', get_template_directory_uri() . '/js/functions.js', array( 'jquery' ), '20141212', true );
     
    //给js脚本传递变量,解决脚本中不能调用php的问题
    wp_localize_script( 'twentyfifteen-script', 'screenReaderText', array(
        'expand'   => '<span class="screen-reader-text">' . __( 'expand child menu', 'twentyfifteen' ) . '</span>',
        'collapse' => '<span class="screen-reader-text">' . __( 'collapse child menu', 'twentyfifteen' ) . '</span>',
    ) );
}
add_action( 'wp_enqueue_scripts', 'twentyfifteen_scripts' );

WordPress什么时需要先注册css/js

即何时需要使用wp_register_script()和wp_register_style()函数。
当css/js很多,并且要分情况加载时,使用wp_register_script()可以更好的管理资源,避免重复劳动。下面的示例代码中,先在init action上把所有需要用到样式表都注册一遍,之后不管想在哪里引入,都可以简单的用wp_enqueue_style( $handle )来加载。


// 在init action处注册脚本,可以与其它逻辑代码放在一起
function my_init(){
    $url = get_template_directory_uri();
    // 注册样式表
    $styles = array(
        'style1' => $url . '/css/style1.css',
        'style2' => $url . '/css/style2.css',
        'style3' => $url . '/css/style3.css'
    );
 
    foreach( $styles as $k => $v ){
        wp_register_style( $k, $v, false );
    }
 
    // 注册脚本
     
    // 其它需要在init action处运行的脚本
}
add_action( 'init', 'my_init' );

注册脚本时需要运行$wp_scripts->add( $handle, $src, $deps, $ver );,若脚本没有注册直接使用wp_enqueue_script,需要先调用add方法,也就是说重复enqueue一个脚本就会运行多次add方法,降低了程序的效率。