让人头疼的WordPress内置wp_enqueue_script函数  

最近启用几个插件后都会出现未知对象错误,也就是俗称的js错误
一直懒得动弹,不是什么好插件就不用了算了
直到今天要启动评论相关插件还有这问题,喵的说什么也要解决掉
先看看docs的本函数说明

说明
将Java脚本添加到WordPress已生成页面的安全方法

用法
<?php wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer ); ?>

参数
$handle

(字符串)(必需)脚本名称。小写字符串。

默认值:None

$src

(字符串)(可选)WordPress根目录下的脚本路径

示例:"/wp-includes/js/scriptaculous/scriptaculous.js"。该参数只在WordPress不了解脚本情况时使用。

默认值:None

$deps

(数组)(可选)脚本所依靠的句柄组成的数组;加载该脚本前需要加载的其它脚本。若没有依赖关系,返回false。该参数只在WordPress不了解脚本情况时使用。

默认值:array()

$ver

(字符串)(可选)指明脚本版本号的字符串(若存在版本号)。默认为false。该参数可确保即使在启用缓存的状态下,发送给客户端的仍然是正确版本,因此如果版本号可用且对脚本有意义,包含该版本号。

默认值:false

$in_footer

(布尔型)(可选)通常情况下脚本会被放置在<head>区块中。如果该函数为true,脚本则会出现在<body>区块的最下方。要求主题在适当的位置中包含有wp_footer()钩子。(WordPress新功能)

默认值:false

示例
加载scriptaculous脚本

<?php
function my_init_method() {
wp_enqueue_script('scriptaculous'); 
}

add_action('init', my_init_method);
?>

根据scriptaculous加载脚本

添加并加载一个依赖于scriptaculous的脚本(这将使scriptaculous也被加载入页面):

<?php
wp_enqueue_script('newscript',
WP_PLUGIN_URL . '/someplugin/js/newscript.js',
array('scriptaculous'),
'1.0' );
?>

只在插件页面加载脚本

<?php

/*
* This example will work at least on WordPress 2.6.3, 
* but maybe on older versions too.
*/

add_action('admin_init', 'my_plugin_admin_init');
add_action('admin_menu', 'my_plugin_admin_menu');

function my_plugin_admin_init()
{
/* Register our script. */
wp_register_script('myPluginScript', WP_PLUGIN_URL . '/myPlugin/script.js');
}

function my_plugin_admin_menu()
{
/* Register our plugin page */
$page = add_submenu_page( 'edit.php', 
__('My Plugin', 'myPlugin'), 
__('My Plugin', 'myPlugin'), 9, __FILE__, 
'my_plugin_manage_menu');

/* Using registered $page handle to hook script load */
add_action('admin_print_scripts-' . $page, 'my_plugin_admin_styles');
}

function my_plugin_admin_styles()
{
/*
* It will be called only on your plugin admin page, enqueue our script here
*/
wp_enqueue_script('myPluginScript');
}

function my_plugin_manage_menu()
{
/* Output our admin page */
}
?>
注意:如果是来自wp_head动作的调用,wp_enqueue_script函数将不起作用,因为在wp_head运行前,<script>标签就已经输出了。应该从init动作函数(在所有页面中加载脚本)、template_redirect (只在公共页面加载脚本)或admin_print_scripts (只在管理页面加载脚本)中调用wp_enqueue_script。不要使用wp_print_scripts(参见此说明)。

WordPress中的默认脚本
注意:WordPress中的jQuery库会以“无冲突”方式加载。利用以下代码按正常方式使用$function:

jQuery(document).ready(function($) {
// $() will work as an alias for jQuery() inside of this function
});

好了,回归正题.这个函数的参数可以加依赖脚本.本来应该没问题,但是架不住这个插件调用一次,加个jQuery,那个插件来个property,都加重复了.
我看了一下我的首页代码,两次jQuery,1次property,喵的一个就是100k,还让不让人活了
本着不修改wp框架代码的精神,把插件所有需要判断的jq参数全干掉了
现在好用了,喵的.干活去~~~~

欢迎大佬支持本博客的发展 -- Donate --

本文链接:让人头疼的WordPress内置wp_enqueue_script函数

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:三十岁,谢谢!^^


分享到:          
  1. 没有评论

  1. 没有通告