如何加载 Javascript 和 CSS 到 WordPress主题前端、后端或插件

如何加载 Javascript 和 CSS 到 WordPress主题前端、后端或插件,第1张

概述正确加载 jQuery、Javascript 和 CSS 到你的WordPress网站也许是一件比较痛苦的事情。 本文将讲解如何使用WordPress官方推荐的...

正确加载 jquery、JavaScript 和 CSS 到你的WordPress网站也许是一件比较痛苦的事情。 本文将讲解如何使用wordpress官方推荐的方式来加载脚本/ CSS。有两种常用的 add_action 钩子可以加载 脚本和CSS到wordpress:

init: 确保始终为您的网站头部加载脚本和CSS(如果使用home.PHP,index.PHP或一个模板文件),以及其他“前端”文章、页面和模板样式。wp_enqueue_scripts:“适当”的钩子方法,并不总是有效的,根据你的wordpress设置。下面的所有例子都在wordpress多站点模式、wordpress 3.4.2 通过测试(如果不支持后续版本,请留言告知)

加载外部 jquery 库和主题自定义的脚本、样式下面这个例子在 add_action 钩子中使用 init。使用 init 有两个原因,一是因为我们正在注销wordpress默认的jquery库,然后加载谷歌的jquery库;二是确保在wordpress的头部就加载脚本和CSS。

使用if ( !is_admin() )是为了确保这些脚本和CSS只在前端加载,不会再后台管理界面加载。

/** Google jquery library,Custom jquery and CSS files */

function myScripts() {

wp_register_script( 'Google','http://AJAX.lug.ustc.edu.cn/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 行:最后的 ‘print’是媒体屏幕调用,确保 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' );使用 wp_enqueue_scripts 替换 init如果你要在文章或页面加载唯一的脚本,那就应该使用 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只加载到那个页面。当然,如果直接使用 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 行使用 admin_enqueue_scripts 替换了 init 或 wp_enqueue_scripts

第 5、6 行,如果你要自定义后台管理区,你可以需要禁用默认的wordpress CSS调用。

/** Adding Scripts To The wordpress admin Area Only */

function myadminScripts() {

wp_register_script( 'default','' );

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','' );

wp_enqueue_script( 'default' );

?>

<link rel='stylesheet' ID='default-CSS' href='<?PHP echo get_template_directory_uri() . '/style.CSS';?>' 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到@R_951_3301@@R_951_3301@加载脚本和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__ ),'' );

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','' );

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 行:自定义 page= 后面的值为你的插件设置页面

/** Adding Scripts On A Plugins Settings Page */

function pluginScripts() {

if ( $_GET['page'] == "plugin_page_name.PHP" ) {

wp_register_script( 'plugin',__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.lug.ustc.edu.cn/AJAX/libs/jquery/1.8.2/jquery.Js"),false,true );

wp_register_script( 'default',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。

总结

以上是内存溢出为你收集整理的如何加载 Javascript 和 CSS 到 WordPress主题前端、后端或插件全部内容,希望文章能够帮你解决如何加载 Javascript 和 CSS 到 WordPress主题前端、后端或插件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/998202.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存