如今,许多 WordPress 网站开始讨论如何将 jQuery、Javascript 和 CSS 正确加载到 WordPress 网站中。 昨天来了一篇比较详细的文章,介绍了如何使用WordPress官方推荐的方法来加载脚本/CSS。
有两种常见的 add_action 挂钩可将脚本和 CSS 加载到 WordPress 中:
以下所有示例均在WordPress多站点模式和WordPress3.4.2下通过测试(如果后续版本不支持,请留言告知)
加载外部 jQuery 库和主题自定义脚本和样式
下面的示例在 add_action 挂钩中使用 init。 使用init有两个动机,一是因为我们取消注册WordPress的默认jQuery库,然后加载微软的jQuery库;二是因为我们要取消注册WordPress的默认jQuery库,然后加载微软的jQuery库; 二是保证脚本和CSS在WordPress面前加载。
if(!is_admin())的使用是为了保证这样的脚本和css只在后端加载,而不会在后台管理界面加载。
/** Google jQuery Library, Custom jQuery and CSS Files */ function myScripts() { wp_register_script( 'google', 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.js' ); wp_register_script( 'default', get_template_directory_uri() . '/jquery.js' ); wp_register_style( 'default', get_template_directory_uri() . '/style.css' ); if ( !is_admin() ) { /** Load Scripts and Style on Website Only */ wp_deregister_script( 'jquery' ); wp_enqueue_script( 'google' ); wp_enqueue_script( 'default' ); wp_enqueue_style( 'default' ); } } add_action( 'init', 'myScripts' );
加载WP默认jQuery库和主题自定义脚本和样式
第 3 行:使用 array('jquery') 告诉 WordPress jquery.js 依赖于 WordPress 的 jQuery 库文件,以便 jquery.js 在 WordPress jQuery 库文件之后加载。
/** Add Custom jQuery and CSS files to a Theme */ function myScripts() { wp_register_script( 'default', get_template_directory_uri() . '/jquery.js', array('jquery'), '' ); wp_register_style( 'default', get_template_directory_uri() . '/style.css' ); if ( !is_admin() ) { /** Load Scripts and Style on Website Only */ wp_enqueue_script( 'default' ); wp_enqueue_style( 'default' ); } } add_action( 'init', 'myScripts' );
将 print.css 加载到您的 WordPress 主题中
第 3 行:最后的“打印”是媒体屏幕调用css3 加载中,确保在加载站点复印机中的文件时加载 print.css。
/** Adding a Print Stylesheet to a Theme */ function myPrintCss() { wp_register_style( 'print', get_template_directory_uri() . '/print.css', '', '', 'print' ); if ( !is_admin() ) { /** Load Scripts and Style on Website Only */ wp_enqueue_style( 'print' ); } } add_action( 'init', 'myPrintCss' );
将 init 替换为 wp_enqueue_scripts
如果你想加载帖子或页面中唯一的脚本,你应该使用wp_enqueue_scripts而不是init。 使用wp_enqueue_scripts只会在前台加载脚本和CSS,不会在后台管理界面加载,所以不需要使用!is_admin()来判断。
使用 is_single() 仅在文章上加载脚本或 CSS
第 3 行的 # 替换为文章的 ID,以便脚本和 css 只能加载到该文章。 事实上,如果直接使用is_single()(不带ID),所有文章中都会加载脚本和CSS。
/** Adding Scripts To A Unique Post */ function myScripts() { if ( is_single(#) ) { /** Load Scripts and Style on Posts Only */ /** Add jQuery and/or CSS Enqueue */ } } add_action( 'wp_enqueue_scripts', 'myScripts' );
使用 is_page() 仅在页面上加载脚本或 CSS
第 3 行的 # 被页面的 ID 替换,这样脚本和 css 只能加载到该页面。 事实上css3 加载中,如果直接使用is_single()(不带ID),脚本和CSS将被加载到所有页面上。
/** Adding Scripts To A Unique Page */ function myScripts() { if ( is_page(#) ) { /** Load Scripts and Style on Pages Only */ /** Add jQuery and/or CSS Enqueue */ } } add_action( 'wp_enqueue_scripts', 'myScripts' );
使用admin_enqueue_scripts加载脚本到后台
此示例将在整个管理界面中加载脚本和 CSS。 不建议插件使用此方法,除非插件重建了整个后台管理区域。
第 10 行将 init 或 wp_enqueue_scripts 替换为 admin_enqueue_scripts
第5行和第6行,如果要自定义后台管理区域,可能需要禁用默认的WordPressCSS调用。
/** Adding Scripts To The WordPress Admin Area Only */ function myAdminScripts() { wp_register_script( 'default', get_template_directory_uri() . '/jquery.js', array('jquery'), '' ); wp_enqueue_script( 'default' ); //wp_deregister_style( 'ie' ); /** removes ie stylesheet */ //wp_deregister_style( 'colors' ); /** disables default css */ wp_register_style( 'default', get_template_directory_uri() . '/style.css', array(), '', 'all' ); wp_enqueue_style( 'default' ); } add_action( 'admin_enqueue_scripts', 'myAdminScripts' );
将脚本和 CSS 加载到 WordPress 登录屏幕
第 6 行:我不知道如何在登陆页面上注册/排序 CSS 文件,因此这一行会自动添加样式表。
第 10-14 行:这些行用于删除 WordPress 默认样式表。
/** Adding Scripts To The WordPress Login Page */ function myLoginScripts() { wp_register_script( 'default', get_template_directory_uri() . '/jquery.js', array('jquery'), '' ); wp_enqueue_script( 'default' ); ?> <link rel='stylesheet' id='default-css' href='' type='text/css' media='all' /> <?php } add_action( 'login_enqueue_scripts', 'myLoginScripts' ); /** Deregister the login css files */ function removeScripts() { wp_deregister_style( 'wp-admin' ); wp_deregister_style( 'colors-fresh' ); } add_action( 'login_init', 'removeScripts' );
将脚本和 CSS 加载到 WordPress 插件中
WordPress 插件加载脚本和 CSS 也很常见。 主要区别在于文件的 URL。 主题使用 get_template_directory_uri,插件应使用plugins_url,因为文件是从插件目录加载的。
从插件加载脚本和 CSS
这个反例将在整个网站的后端加载脚本和CSS。
/** Global Plugin Scripts for Outside of Website */ function pluginScripts() { wp_register_script( 'plugin', plugins_url( 'jquery.js' , __FILE__ ), array('jquery'), '' ); wp_register_style( 'plugin', plugins_url( 'style.css' , __FILE__ ) ); if ( !is_admin() ) { /** Load Scripts and Style on Website Only */ wp_enqueue_script( 'plugin' ); wp_enqueue_style( 'plugin' ); } } add_action( 'init', 'pluginScripts' );
将脚本和 CSS 从插件加载到管理区域
如果您需要在整个管理区域加载脚本和 CSS,请使用 admin_enqueue_scripts 而不是 init。
/** Global Plugin Scripts for The WordPress Admin Area */ function pluginScripts() { wp_register_script( 'plugin', plugins_url( 'jquery1.js' , __FILE__ ), array('jquery'), '' ); wp_enqueue_script( 'plugin' ); wp_register_style( 'plugin', plugins_url( 'style1.css' , __FILE__ ) ); wp_enqueue_style( 'plugin' ); } add_action( 'admin_enqueue_scripts', 'pluginScripts' );
将脚本和 CSS 从插件加载到插件设置页面
该示例只会将所需的脚本和CSS加载到插件设置页面,并且不会加载管理区域中的其他页面。
第 3 行:custom page= 旁边的值设置插件的页面
/** Adding Scripts On A Plugins Settings Page */ function pluginScripts() { if ( $_GET['page'] == "plugin_page_name.php" ) { wp_register_script( 'plugin', plugins_url( 'jquery.js' , __FILE__ ), array('jquery'), '' ); wp_enqueue_script( 'plugin' ); wp_register_style( 'plugin', plugins_url( 'style.css' , __FILE__ ) ); wp_enqueue_style( 'plugin' ); } } add_action( 'admin_enqueue_scripts', 'pluginScripts' );
将 jQuery 库连接到脚注
您无法将 WordPress 的默认 jQuery 库链接到页面顶部,但可以将自定义 jQuery 或其他外部 jQuery 库(例如 Google 的)链接到顶部。 不要将 CSS 链接到页面顶部。
第 3 行和第 4 行:末尾的“true”告诉 WordPress 在页面顶部加载此脚本。
/** Moves jQuery to Footer */ function footerScript() { wp_register_script('jquery', ("http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.js"), false, '', true ); wp_register_script( 'default', get_template_directory_uri() . '/jquery.js', false, '', true ); if ( !is_admin() ) { /** Load Scripts and Style on Website Only */ wp_deregister_script( 'jquery' ); wp_enqueue_script( 'jquery' ); wp_enqueue_script( 'default' ); } } add_action( 'init', 'footerScript' );
根据不同的用户角色和能力加载 jQuery 和 CSS
如果您的网站有作者、编辑和其他管理员,您可能需要使用 jQuery 为他们显示不同的信息。 您需要使用 current_user_can 来确定登录用户的角色和能力。
在下面的三个示例中,如果用户已经登录,这些脚本和 CSS 将在整个站点加载。使用 !is_admin() 包装 enqueue_script 以确保它仅在前台加载,或在 add_action 中使用 admin_enqueue_scripts 以确保只在后台管理区加载。
为可以“编辑帖子”的管理员加载脚本和 CSS
仅对超级管理员和站点管理员有效
/** Add CSS & jQuery based on Roles and Capabilities */ function myScripts() { if ( current_user_can('edit_posts') ) { /** Add jQuery and/or CSS Enqueue */ } } add_action( 'init', 'myScripts' );
为所有登录用户加载脚本和 CSS
/** Admins / Authors / Contributors / Subscribers */ function myScripts() { if ( current_user_can('read') ) { /** Add jQuery and/or CSS Enqueue */ } } add_action( 'init', 'myScripts' );
为管理员以外的登录用户加载脚本和 CSS
/** Disable for Super Admins / Admins enable for Authors / Contributors / Subscribers */ function myScripts() { if ( current_user_can('read') && !current_user_can('edit_users') ) { /** Add jQuery and/or CSS Enqueue */ } } add_action( 'init', 'myScripts' );
最后提示
如果使用相同的 add_action,其中的许多示例可以组合成一个函数。
换句话说,您可以使用多个 if 语句将脚本和 CSS 调用拆分到一个函数中,例如: if_admin! if_admin、is_page、is_single 和 current_user_can 各自使用相同的 add_action init。
参考原文(已删除):