##模板获取js和css
WordPress 本身以及主题和插件通常需要加载一些 JavaScript 来实现某些特殊功能。为了最大限度地保证兼容性,不至于出现 JavaScript 失效的情况,所以一般在页头加载 JavaScript 文件。
但是我们一般不建议直接去修改主题的 header.php,或者添加代码到 wp_head() 或 wp_footer() 钩子上,而是要使用 WordPress 官方文档建议使用的 WP 内建的wp_enqueue_script() 和 wp_enqueue_style() 等函数进行操作。
**函数:wp_enqueue_script()**
* * * * *
**函数用法:**
~~~
<?php wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer ); ?>
~~~
1. $handle:用于区别 JS 名称,即标识字串 (string);
1. $src:JS 的文件 URL (string);
1. $deps:加载的 JS 所依存的其他 JS 标识字串数组 (array:string, 非必需);
1. $ver:JS 的版本号,留空则使用当前 WP 版本号 (string, 非必需);
1. $in_footer:是否放置到网页 HTML 底部加载 (boolean, 非必需)。
**函数:wp_enqueue_style()**
* * * * *
**函数用法:**
`<?php wp_enqueue_style( $handle, $src, $deps, $ver, $media ); ?>`
参数解释:
1. $handle:用于区别 CSS 的名称,即标识字串 (string);
1. $src:CSS 的文件 URL (string);
1. $deps:加载的 CSS 所依存的其他 CSS 标识字串数组 (array:string, 非必需);
1. $ver:CSS 文件的版本号,留空则使用当前 WP 版本号 (string, 非必需);
1. $media:用于加载 CSS 的头部标签 link 的 media 参数值 (string, 非必需)。
**示例:**
~~~
<?php
function my_enqueue_scripts() {
if( !is_admin ) { // 前台加载的脚本与样式表
// 去除已注册的 jquery 脚本
wp_deregister_script( 'jquery' );
// 注册 jquery 脚本
wp_register_script( 'jquery', get_template_directory_uri() . '/js/jquery.js', false, '1.0', false );
// 提交加载 jquery 脚本
wp_enqueue_script( 'jquery' );
}
}
// 添加回调函数到 init 动作上
add_action( 'init', 'my_enqueue_scripts' );
?>
~~~
在以往我们制作 WP 主题的时候,当引入 JS 文件或 CSS 文件时,通常是直接编辑 header.php 文件,然后将相应的页面头部 HTML 代码添加进去。或者利用 wp_head() 函数钩子插入 HTML 代码。
遇到一个插件或主题功能比较多的 WordPres 网站时,如果仍使用自行插入代码的方式引入 JS / CSS,将可能导致 JS 的重载和 CSS 的重定义或覆盖的后果。而使用 wp_enqueue_script() 和wp_enqueue_style() 等函数操作头部引用,将输出 HTML 语句的工作交给 WP 内核去完成(几乎所有插件都这么做),不仅能够避免重复加载的现象出现,也可实现按 PHP 脚本顺序,任意修改、覆盖、删除即将被加载的 JS 文件和 CSS 文件。
**另外一个函数:wp_print_scripts()**
* * * * *
虽然将 JavaScript 文件都放到页面末尾加载对于页面加载速度很有帮助,但是请注意,所谓页面末尾指的是在 WordPress 的 wp_footer() 函数中调用,这个函数通常刚好位于页面的 </body> 标签前面(当然是末尾了)。
有时候我们可能会在 wp_footer 函数出现之前就需要用到某些 JavaScript,比如 jquery.js 文件。
这样的情况也是很常见的。比如我单独创建了一个链接页面,在这个页面中我使用了 jQuery 方法来获取链接网站的 favicon。很显然,我只需要在这唯一一个页面使用这部分代码,所以将这段代码直接放在这个页面模板中是最好的做法。
> 问题来了:这部分内容显然是在 wp_footer 之前出现的,那么这段代码就在 jquery.js 文件之前出现了,导致该代码段实际上无法工作,因为调用 jQuery 方法的代码段必须比 jquery.js 文件后加载。
那么如何处理这种特殊情况呢?其实也很简单。以上面的情景为例,既然我们需要先调用 jquery.js 文件,那我们就在该代码段之前直接输出需要的 jquery.js 文件,不使用 `wp_enqueue_script()` 函数,而改用`wp_print_scripts()` 函数。
`wp_enqueue_script()` 与 `wp_print_scripts() `的区别是 :`wp_enqueue_script()` 是告诉 WordPress “我在这个页面上需要用到某个 JavaScript 文件,你可要记得加载啊”。WordPress 默认在 `wp_head()` 中处理,而我们改为在 `wp_footer()` 中处理。`wp_print_scripts()` 则直接在你使用此方法的位置输出需要的 JavaScript 文件,而不是加入到 WordPress 的处理任务中。
如果我们在页面的中间使用,
`<?php wp_print_scripts('jquery'); ?>`
直接输出了 jquery.js 文件(通常是其压缩版本 jquery.min.js),那么即使其它的插件或者什么东西使用,
`<?php wp_enqueue_script('jquery'); ?>`
告诉 WordPress 需要加载 jquery.js,WordPress 在 `wp_footer()` 中处理的时候也会先检查前面是不是已经有了,如果有了就不会再重新加载一次。
在 WordPress 中加载 JavaScript 最好使用 `wp_enqueue_script()` 函数以减少问题提高效率。如果不是有这些特殊情况要处理,使用 Autoptimize 插件显然比较好,它全面完成任务而且使用简单。但是如果使用的主题本身已经很简洁了,那么 直接把JavaScript脚本放在footer或者使用:JavaScript to Footer(后台搜索即可安装)更简单高效,也就更好。
- 模板制作
- wp的模板文件系统
- wp头部代码示例
- wp模板主体代码
- WordPress各种标签调用集合
- wordpress模板的各种调用
- wp模板里面的各种判断
- wordpress非插件同步twitte
- 功能与扩展
- 获取文章评论数及人数
- 获取assets路径
- 函数参数详解
- wp_nav_nemu
- WordPress主题制作全过程
- 1、模板主体文件构成
- 2、HTML静态模板制作
- 3、小试牛刀
- 4、制作header.php
- 5、制作footer.php
- 6、制作sidebar.php
- 7、制作index.php
- 8、制作sigle.php
- 9、制作comments.php
- 10、制作page.php
- 小知识
- 模板获取js和css
- woocommerce
- woocommerce模板文件说明
- wp二次开发快速指南
- wp文件系统解析
- wordpress开发api之钩子大全
- 在典型请求中运行的动作钩子
- 日志、页面、附件以及类别相关的动作钩子函数
- 评论、Ping以及引用通告相关动作钩子函数
- 反向链接钩子
- Feed动作钩子函数
- 模板动作钩子
- 管理界面的相关动作函数
- 高级动作函数
- 常用函数之add_action
- 插件开发
- 函数大全
- 问题合集
- 获取wordpress当前文件的模板文件
- 禁用wordpress gravatar使用本地头像提高网页打开速度
- woocommerce问题
- 关于cnzz的问题
- 关于wp搬家以后调用数据显示为问号
- 未解决的问题
- form_control的问题
- 关于流程与要求的定义与补充
- php开发组对于前端提交文件的要求