在WordPress主题中,如何使用wp_enqueue_script()和wp_enqueue_style()正确加载JavaScript和CSS?

2024-10-28 72 0

在WordPress中,使用 wp_enqueue_script()wp_enqueue_style() 函数是官方推荐的方式来加载JavaScript和CSS文件。以下是如何使用这些函数的步骤:

加载CSS文件

使用 wp_enqueue_style() 函数可以加载CSS文件。以下是一个示例:

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' );

在这个例子中:

  • 'parent-style' 是一个handle(句柄),用于引用样式表。
  • get_template_directory_uri() 返回当前主题目录的URL。
  • get_stylesheet_directory_uri() 返回当前主题(如果是子主题,则返回子主题)目录的URL。
  • array('parent-style') 表示这个样式依赖于 'parent-style',这意味着 'parent-style' 必须先被加载。
  • '1.0.0' 是版本号,用于缓存管理。
  • 'all' 指定样式表应用于所有媒体类型。

加载JavaScript文件

使用 wp_enqueue_script() 函数可以加载JavaScript文件。以下是一个示例:

function my_theme_enqueue_scripts() {
    // 加载jQuery
    wp_enqueue_script( 'jquery' );

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

    // 如果你的脚本需要使用WordPress特定的JavaScript对象或函数,比如wp.ajax,你可以传递这些对象
    wp_localize_script( 'my-custom-script', 'my_ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
}
add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_scripts' );

在这个例子中:

  • 'my-custom-script' 是一个handle(句柄),用于引用脚本。
  • array('jquery') 表示这个脚本依赖于 'jquery',这意味着 'jquery' 必须先被加载。
  • '1.0.0' 是版本号,用于缓存管理。
  • true 表示脚本应该被放在页面的底部,这是推荐的加载方式,以避免阻塞页面的其他元素。

使用 wp_localize_script() 函数可以传递PHP变量到JavaScript中,这在需要从JavaScript访问WordPress设置或URL时非常有用。

确保在加载脚本和样式表时,你的函数被正确地添加到 wp_enqueue_scripts 动作钩子上,这样它们就会在WordPress加载页面的脚本和样式时被调用。

相关文章

在WordPress主题中,如何实现响应式布局?
如何使用WordPress的nonce字段来增强表单安全性?
如何使用WordPress REST API 创建和读取自定义端点?
在WordPress主题开发中,如何使用wp_nav_menu()函数来自定义菜单?
如何使用the_post()函数在WordPress主题中循环显示文章?
在WordPress插件开发中,如何创建自定义数据库表?