我的Wordpress页面加载(使用jQuery的load()
)其他页面,我希望主页面已经拥有所有需要的.js文件,其中一些是手工制作的。
当我尝试通常使用平常添加它们时:
<script src="http://10.0.0.158:8082/js/myScript.js"></script>
有时它有效,有时不行。 70%的时间不起作用,我只需要几个F5就可以暂时使其正常工作。
我的页面加载了很多其他页面(总是使用jQuery的load()
)但是如果在普通的php页面中导入它会正常工作。
Wordpress就搞砸了。
所以我google了很多,似乎我不能只通过html标签导入脚本,我需要使用wordpress的php函数wp_enqueue_script
,文档在这里:http://codex.wordpress.org/Function_Reference/wp_enqueue_script
使用该文档和本指南中的信息: http://www.ericmmartin.com/5-tips-for-using-jquery-with-wordpress/
我做了这个功能:
<?php
function customScriptInit() {
if (!is_admin()) {
echo"look! i'm working!";
wp_deregister_script('jquery');
wp_register_script('jquery', 'http://10.0.0.158:8082/js/JQuery.min.js', false, '1.8.3', true);
wp_enqueue_script('jquery');
wp_enqueue_script('jqueryUi', 'http://10.0.0.158:8082/js/jquery-ui-1.9.2.min.js', array('jquery'), '1.0', true);
wp_enqueue_script('cookie', 'http://10.0.0.158:8082/js/cookie.js', array('jquery'), '1.0', true);
wp_enqueue_script('json2', 'http://10.0.0.158:8082/js/json2.js', array('jquery'), '1.0', true);
wp_enqueue_script('easing', 'http://10.0.0.158:8082/js/easing.min.js', array('jquery'), '1.0', true);
}
}
add_action('wp_enqueue_scripts', 'customScriptInit');
?>
我放置了一个echo命令以确保其正常运行(是的,我现在可以在我的页面中看到该消息)。
但是现在..看起来根本没有加载js,我从javascript控制台得到了这个错误:
Uncaught ReferenceError: jQuery is not defined
如果我删除关于jQuery deregister的3行并再次注册我有jQuery工作,但不是我导入的脚本,通常与cookie的js错误:
Can't read cookie: TypeError: Object function (e,t){return new v.fn.init(e,t,n)} has no method 'cookie'
如何将这些js文件正确导入我的页面?
我知道使用Wordpress,使用“jQuery”而不是“$”是好的,我只是将它们全部转换成了这个结果,使用“$”结束了一团糟!
编辑:用此代码解决
<?php
function customScriptInit() {
if (!is_admin()) {
wp_register_script( 'my-jqueryUi', ABSPATH . '/js/jquery-ui-1.9.2.min.js');
wp_register_script( 'my-cookie', ABSPATH . '/js/cookie.js');
wp_register_script( 'my-json2', ABSPATH . '/js/json2.js');
wp_register_script( 'my-easing', ABSPATH . '/js/easing.min.js');
wp_enqueue_script( 'my-jqueryUi');
wp_enqueue_script( 'my-cookie');
wp_enqueue_script( 'my-json2');
wp_enqueue_script( 'my-easing');
}
}
add_action('wp_enqueue_scripts', 'customScriptInit');
?>
感谢adeneo的良好实践细分!
答案 0 :(得分:2)
你不应该加载你自己的jQuery版本,因为你最有可能在你的网站上有几个版本的jQuery。只需将jQuery和jQueryUI设置为在其他脚本中重新编写,wordpress将自动加载jQuery:
function customScriptInit() {
if (!is_admin()) {
$depends_on = array('jquery', 'jquery-ui-core', 'jquery-ui-sortable');
wp_enqueue_script('cookie', ABSPATH . '/js/cookie.js', $depends_on);
wp_enqueue_script('json2', ABSPATH . '/js/json2.js', $depends_on);
wp_enqueue_script('easing', ABSPATH . '/js/easing.min.js', $depends_on);
}
}
add_action('wp_enqueue_scripts', 'customScriptInit');
使用其中一个WP变量作为URL,不要对它们进行硬编码。对于你通常会做的插件:
plugins_url('/js/cookie.js', __FILE__)
获取正确的网址等。
另请注意,在wordpress中你需要单独加载jQuery UI的每个部分,具体取决于你需要的内容,所有内容都在Codex中解释!
在Wordpress中,你不需要用jQuery更改所有的元符号,只需将它包装在一个无冲突的包装器中,如下所示:
jQuery(document).ready(function($) {
// $() will work just fine as an alias for jQuery() inside of this function
});
在其中,你会像往常一样使用$
,让事情变得更容易。
答案 1 :(得分:0)
在
之前解决了注册js文件的问题<?php
function customScriptInit() {
if (!is_admin()) {
wp_register_script( 'my-jqueryUi', ABSPATH . '/js/jquery-ui-1.9.2.min.js');
wp_register_script( 'my-cookie', ABSPATH . '/js/cookie.js');
wp_register_script( 'my-json2', ABSPATH . '/js/json2.js');
wp_register_script( 'my-easing', ABSPATH . '/js/easing.min.js');
wp_enqueue_script( 'my-jqueryUi');
wp_enqueue_script( 'my-cookie');
wp_enqueue_script( 'my-json2');
wp_enqueue_script( 'my-easing');
}
}
add_action('wp_enqueue_scripts', 'customScriptInit');
?>