问题描述
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 )
添加脚本。
笔记:
-
未压缩脚本由
.dev.js
(SCRIPT_DEBUG
为TRUE
) 进行搜索。 -
$wp_styles
似乎也是可以的。 -
编辑:当 (
SCRIPT_DEBUG
为TRUE
) 时,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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。