问题描述

WP 有一个很好的 javascript 加载器包含在 wp-admin 中:http://core.trac.wordpress.org/browser/tags/3.0.4/wp-admin/load-scripts.php

和一个 CSS 加载器:http://core.trac.wordpress.org/browser/tags/3.0.4/wp-admin/load-styles.php

我想知道是否可以在 front-end 中使用它们,而不仅仅是管理员,因为它们可以连接所有入队脚本,并将它们作为单个 gzip 压缩文件

最佳解决方案

迟到的答案

简要介绍一下:

你必须使用

  •  include( admin_url().'load-scripts.php' );

  • include( admin_url().'script-loader.php' );

然后跳入 $GLOBALS['wp_scripts']

使用…

$wp_scripts->default_dirs( array_merge(
     $wp_scripts->default_dirs
    ,array( '/themes/your_theme/js/' )
);

… 扩展它

然后使用

$wp_scripts->add( $handle, $path_from_content_dir, false/array( $deps ), $ver )

添加脚本。

笔记:

  1. 未压缩脚本由.dev.js(SCRIPT_DEBUGTRUE) 进行搜索。

  2. $wp_styles 似乎也是可以的。

  3. 编辑:当 (SCRIPT_DEBUGTRUE) 时,WP 3.5 将更改此行为并使用.js 作为”dev” 版本和”.min.js”;

(但是我猜这只有使用插件或 mu-plugin 才有效。)

没有测试,如果这样工作,我不知道。

次佳解决方案

这是一个非常好的问题,将是 WordPress 包含的一个很好的功能。

其他一些答案没有解决主要问题。

I was wondering if it’s possible to use them in the front-end too, not just admin, because they can concatenate all enqueued scripts, and serve them as a single gzipped file.

目前不可能使用内置的脚本加载器来连接前端的 css 和脚本。

几年前有一个 discussion about this on WP Hackers,有一个 trac ticket for this enhancement 被接受,但是将来的版本。

第三种解决方案

如果您需要在前端排列一个 CSS 文件:

1) 通过 wp_register_style($ handle,$ src) 注册样式 2) 将钩子 wp_enqueue_style($ handle) 插入到 wp_print_styles 钩子中。

如果您需要在前端排列一个脚本:

1) 通过 wp_register_script($ handle,$ src) 注册样式 2) 将钩子 wp_enqueue_script($ handle) 插入到 wp_head 钩子中。

(注意:我会预期这个 wp_print_styles 钩子,但这个钩子显然不按预期工作。)

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。