如何使用 WordPress 的 wp_enqueue_script() 和 wp_enqueue_style() 来正确地加载脚本和样式?

2025-01-03 11 0

在WordPress中,使用 wp_enqueue_script()wp_enqueue_style() 函数是管理前端脚本和样式表的推荐方式。以下是如何正确使用这些函数的步骤:

加载样式表(CSS)

使用 wp_enqueue_style() 函数来加载样式表。

function my_theme_enqueue_styles() {
    // 注册样式表
    wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );

    // 如果是子主题,可以这样加载父主题的样式
    // wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );

    // 加载额外的样式表
    wp_enqueue_style( 'my-custom-style', get_stylesheet_directory_uri() . '/css/my-custom-style.css', array('parent-style'), '1.0.0', 'all' );
}
add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' );

参数说明:

  • 'my-custom-style': 样式表的唯一标识符。
  • get_stylesheet_directory_uri() . '/css/my-custom-style.css': 样式表的URL。
  • array('parent-style'): 依赖关系数组,表示这个样式表依赖于 'parent-style' 样式表。
  • '1.0.0': 样式表的版本号,用于缓存管理。
  • 'all': 样式表的应用媒体类型。

加载脚本(JavaScript)

使用 wp_enqueue_script() 函数来加载JavaScript脚本。

function my_theme_enqueue_scripts() {
    // 注册jQuery(如果WordPress没有在页面上默认加载它)
    wp_enqueue_script( 'jquery' );

    // 加载自定义脚本
    wp_enqueue_script( 'my-custom-script', get_stylesheet_directory_uri() . '/js/my-custom-script.js', array('jquery'), '1.0.0', true );

    // 如果你的脚本需要使用任何特定的JavaScript变量,你可以使用wp_localize_script()来传递数据
    $translation_array = array(
        'some_string' => __( 'Some string to translate', 'text-domain' ),
        'a_value' => '10'
    );
    wp_localize_script( 'my-custom-script', 'object_name', $translation_array );
}
add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_scripts' );

参数说明:

  • 'my-custom-script': 脚本的唯一标识符。
  • get_stylesheet_directory_uri() . '/js/my-custom-script.js': 脚本的URL。
  • array('jquery'): 依赖关系数组,表示这个脚本依赖于 'jquery' 脚本。
  • '1.0.0': 脚本的版本号,用于缓存管理。
  • true: 表示脚本应该被放在页面的底部(在 </body> 标签之前),以避免阻塞页面渲染。

确保在加载脚本和样式之前注册它们,并且只在 wp_enqueue_scripts 钩子上调用 wp_enqueue_script()wp_enqueue_style() 函数。

通过这种方式,你可以确保你的脚本和样式表在WordPress中正确地加载,同时避免潜在的问题,比如脚本冲突和重复加载。

相关文章

在WordPress主题中,如何使用 get_header(), get_footer(), 和 get_sidebar() 函数来包含模板部分?
在WordPress主题开发中,如何使用 the_custom_logo() 函数来显示自定义标志?
在WordPress插件中,如何使用 wp_enqueue_script() 和 wp_enqueue_style() 来注册和排队脚本和样式?
如何使用WordPress的 get_option() 和 update_option() 函数来获取和更新选项?
如何使用WordPress的WP_Customize_Manager类来自定义主题定制器?
在WordPress主题中,如何使用wp_reset_postdata()来避免查询冲突?