您现在的位置是:首页 > cms教程 > WordPress教程WordPress教程
WordPress怎么引入css/js详细介绍
凌瑶2025-03-01WordPress教程已有人查阅
导读WordPress引入css/js方法很多,条件很多。如何全局加载,或仅在某些页面精准加载,什么时候需要先注册脚本再加载,本文希望找到最简单的方式,并给出探索更多方法的途径。在前台加载
WordPress引入css/js方法很多,条件很多。如何全局加载,或仅在某些页面精准加载,什么时候需要先注册脚本再加载,本文希望找到最简单的方式,并给出探索更多方法的途径。
在前台加载css/js
用wp_enqueue_script()函数加载js,用wp_enqueue_style()加载css,加载资源的位置(action)只有一个--wp_enqueue_scripts。
用wp_enqueue_系列函数可以更好的处理脚本样式表的依赖关系,防止重复加载,以twentyfifteen主题为例。
即何时需要使用wp_register_script()和wp_register_style()函数。
当css/js很多,并且要分情况加载时,使用wp_register_script()可以更好的管理资源,避免重复劳动。下面的示例代码中,先在init action上把所有需要用到样式表都注册一遍,之后不管想在哪里引入,都可以简单的用wp_enqueue_style( $handle )来加载。
将action替换为login_enqueue_scripts即可,例如
同理,将action改为admin_enqueue_scripts
仅用于后台某些页面的资源只在这些页面加载就好,不要到处使用,可以减少不必要的冲突。
1. $hook_suffix
首先我们可以根据admin_enqueue_scripts这个action传递的$hook_suffix参数来判断所处的页面,例如仅在edit.php加载,代码如下
2. $typenow
全局变量$typenow可以告诉我们当前的post type,例如仅在post的列表页面加载可以这样来判断
上述两个全局变量可以区分大多数情况,若区分不了,可以试试使用get_current_screen()函数,该函数返回当前页面的post type、ID、base等信息,只能在admin_init之后使用,具体可以参考官方文档。
4. $pagenow
全局变量$pagenow的返回值与$hook_suffix类似,只是它在前台后台都可以访问,定义的更早,例如前三者在admin_init处没有值,但$pagenow却有。
它定义在wp-includes/vars.php中,该文件还定义了浏览器、服务器全局变量,例如$is_winIE、$is_apache,wp_is_mobile()函数也在这里出现。
上述全局变量和函数能区分大多数情况,但依然有无力的时候,这时可以借助$_REQUEST来判断。上述变量的值也是从$_REQUEST获取,但多一层值是否存在的检查,所以能用它们解决的就不要用$_REQUEST或者$_GET。
在前台加载css/js
用wp_enqueue_script()函数加载js,用wp_enqueue_style()加载css,加载资源的位置(action)只有一个--wp_enqueue_scripts。
用wp_enqueue_系列函数可以更好的处理脚本样式表的依赖关系,防止重复加载,以twentyfifteen主题为例。
function twentyfifteen_scripts() {
//全局加载一般的样式表
wp_enqueue_style( 'genericons', get_template_directory_uri() . '/genericons/genericons.css', array(), '3.2' );
//全局加载主样式表
wp_enqueue_style( 'twentyfifteen-style', get_stylesheet_uri() );
//全局加载仅用于IE的样式表
wp_enqueue_style( 'twentyfifteen-ie', get_template_directory_uri() . '/css/ie.css', array( 'twentyfifteen-style' ), '20141010' );
wp_style_add_data( 'twentyfifteen-ie', 'conditional', 'lt IE 9' );
//全局加载js脚本
wp_enqueue_script( 'twentyfifteen-script', get_template_directory_uri() . '/js/functions.js', array( 'jquery' ), '20141212', true );
//给js脚本传递变量,解决脚本中不能调用php的问题
wp_localize_script( 'twentyfifteen-script', 'screenReaderText', array(
'expand' => '<span class="screen-reader-text">' . __( 'expand child menu', 'twentyfifteen' ) . '</span>',
'collapse' => '<span class="screen-reader-text">' . __( 'collapse child menu', 'twentyfifteen' ) . '</span>',
) );
}
add_action( 'wp_enqueue_scripts', 'twentyfifteen_scripts' );
若仅在某些页面加载,利用WordPress的Conditional Tags即可。什么时需要先注册css/js即何时需要使用wp_register_script()和wp_register_style()函数。
当css/js很多,并且要分情况加载时,使用wp_register_script()可以更好的管理资源,避免重复劳动。下面的示例代码中,先在init action上把所有需要用到样式表都注册一遍,之后不管想在哪里引入,都可以简单的用wp_enqueue_style( $handle )来加载。
// 在init action处注册脚本,可以与其它逻辑代码放在一起
function my_init(){
$url = get_template_directory_uri();
// 注册样式表
$styles = array(
'style1' => $url . '/css/style1.css',
'style2' => $url . '/css/style2.css',
'style3' => $url . '/css/style3.css'
);
foreach( $styles as $k => $v ){
wp_register_style( $k, $v, false );
}
// 注册脚本
// 其它需要在init action处运行的脚本
}
add_action( 'init', 'my_init' );
注册脚本时需要运行$wp_scripts->add( $handle, $src, $deps, $ver );,若脚本没有注册直接使用wp_enqueue_script,需要先调用add方法,也就是说重复enqueue一个脚本就会运行多次add方法,降低了程序的效率。在WordPress登录页面加载将action替换为login_enqueue_scripts即可,例如
function enqueue_for_login(){
wp_enqueue_style( 'core', 'style.css', false );
wp_enqueue_script( 'my-js', 'filename.js', false );
}
add_action( 'login_enqueue_scripts', 'enqueue_for_login' );
如果想了解其它方式,可以仔细阅读wp-login.php。在后台全局加载同理,将action改为admin_enqueue_scripts
function my_enqueue() {
wp_enqueue_script( 'my_custom_script', plugin_dir_url( __FILE__ ) . 'myscript.js' );
}
add_action( 'admin_enqueue_scripts', 'my_enqueue' );
想了解更多方法,请阅读wp-admin/admin-header.php。在后台按需加载仅用于后台某些页面的资源只在这些页面加载就好,不要到处使用,可以减少不必要的冲突。
1. $hook_suffix
首先我们可以根据admin_enqueue_scripts这个action传递的$hook_suffix参数来判断所处的页面,例如仅在edit.php加载,代码如下
function my_enqueue( $hook_suffix ) {
if ( 'edit.php' == $hook_suffix ) {
wp_enqueue_script( 'my_custom_script', plugin_dir_url( __FILE__ ) . 'myscript.js' );
}
}
add_action( 'admin_enqueue_scripts', 'my_enqueue' );
edit.php就是post、page或者custom post type的列表页面,编辑页面是post.php,新建页面是post-new.php,可以在不同页面打印$hook_suffix来了解它的使用方法。但由此也可看出它不能区分现在是在哪种post页面,需要借助更多的全局变量来判断。2. $typenow
全局变量$typenow可以告诉我们当前的post type,例如仅在post的列表页面加载可以这样来判断
function my_enqueue( $hook_suffix ) {
global $typenow;
if ( 'edit.php' == $hook_suffix && $typenow == 'post' ) {
wp_enqueue_script( 'my_custom_script', plugin_dir_url( __FILE__ ) . 'myscript.js' );
}
}
add_action( 'admin_enqueue_scripts', 'my_enqueue' );
3. get_current_screen()上述两个全局变量可以区分大多数情况,若区分不了,可以试试使用get_current_screen()函数,该函数返回当前页面的post type、ID、base等信息,只能在admin_init之后使用,具体可以参考官方文档。
4. $pagenow
全局变量$pagenow的返回值与$hook_suffix类似,只是它在前台后台都可以访问,定义的更早,例如前三者在admin_init处没有值,但$pagenow却有。
它定义在wp-includes/vars.php中,该文件还定义了浏览器、服务器全局变量,例如$is_winIE、$is_apache,wp_is_mobile()函数也在这里出现。
上述全局变量和函数能区分大多数情况,但依然有无力的时候,这时可以借助$_REQUEST来判断。上述变量的值也是从$_REQUEST获取,但多一层值是否存在的检查,所以能用它们解决的就不要用$_REQUEST或者$_GET。
本文标签:
很赞哦! ()
相关教程
图文教程
wordpress设置中文的教程
如果你想更改WordPress的语言,比如将英文版转换为中文版,或者将中文版转换为英文版,该如何操作?其实很简单,打开网站根目录下的 wp-config.php
WordPress博客SEO需要注意的小技巧
keywords和description无论对于什么类型的网站都是 非常的重要,这是搜索引擎 头一眼看到的内容,也可以说是你网站的门面
nginx环境下安装wordpress的方法
安装php,支持mysql和fpmphp使用默认配置即可修改nginx配置,/opt/nginx/nginx.conf配置中增加一个虚拟主机重启服务器重启php5-fpm,这一步非常重要
wordpress使用的编程语言是什么
wordpress使用的编程语言是PHP语言,意思就是WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。
相关源码
-
(自适应)蓝色基建施工工程建筑集团网站pbootcms模板下载为工程建筑、基建施工类企业打造的PbootCMS模板,采用现代化设计理念,突出企业实力与项目展示,帮助建筑类企业快速建立专业在线门户。查看源码 -
(自适应)中英文双语外贸扬声器音响喇叭话筒网站模板免费下载为音响设备外贸企业设计的中英文双语网站模板,基于PbootCMS内核开发。适配扬声器系统、音频设备等产品的国际化展示需求查看源码 -
(PC+WAP)绿色日志美文文学说说博客网站pbootcms模板除日志博客类网站外,通过替换图文内容可快速适配:心情日记分享平台、文学创作社区、朋友圈内容聚合站、美文鉴赏网站、读书笔记平台等应用场景。查看源码 -
(自适应)大气办公用品耗材供应打印机产品维修网站模板下载基于PbootCMS系统开发的响应式网站模板,为营销技术博主、数字产品评测者设计。采用前沿的响应式技术,确保内容在手机端和桌面端都能获得较佳阅读体验,帮助用户高效展示技术文章和产品分析。查看源码 -
工商注册财务代理记账类自适应pbootcms网站工商注册、财务代理记账企业打造的数字化门户模板,基于PbootCMS内核深度开发。采用前沿响应式架构,无缝适配手机端触控交互与PC端展示需求查看源码 -
(PC+WAP)茶叶茶艺茶道茶文化pbootcms模网站源码下载本模板基于PbootCMS系统开发,为茶叶企业、茶艺培训机构设计,特别适合展示茶产品、茶道文化等内容。采用响应式技术,确保在不同设备上都能呈现优雅的茶文化氛围。查看源码
| 分享笔记 (共有 篇笔记) |

