Javascript Can';不要在Wordpress中包含自定义JS
我的Wordpress页面加载(使用jQuery的Javascript Can';不要在Wordpress中包含自定义JS,javascript,wordpress,import,Javascript,Wordpress,Import,我的Wordpress页面加载(使用jQuery的load())另一个页面,我希望主页上已经有了所有需要的.js文件,其中一些是手工制作的 当我尝试正常添加它们时,通常: <script src="http://10.0.0.158:8082/js/myScript.js"></script> 我放置了一个echo命令以确保其正常运行(是的,我现在可以在我的页面中看到该消息) 但是现在。。看起来根本没有加载js,我在javascript控制台中遇到了以下错误: Unca
load()
)另一个页面,我希望主页上已经有了所有需要的.js文件,其中一些是手工制作的
当我尝试正常添加它们时,通常:
<script src="http://10.0.0.158:8082/js/myScript.js"></script>
我放置了一个echo命令以确保其正常运行(是的,我现在可以在我的页面中看到该消息)
但是现在。。看起来根本没有加载js,我在javascript控制台中遇到了以下错误:
Uncaught ReferenceError: jQuery is not defined
如果我删除了关于jQuery注销并再次注册的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提供的良好实践分段 您不应该加载自己版本的jQuery,因为您的站点上很可能会出现多个版本的jQuery。只需将jQuery和jQueryUI设置为其他脚本中的requered,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');
并为URL使用一个WP变量,不要硬编码它们。对于插件,您通常会执行以下操作:
plugins_url('/js/cookie.js', __FILE__)
获取正确的url等
还要注意,在wordpress中,您需要分别加载jQueryUI的每个部分,这取决于您需要什么,所有这些都在下面的部分中进行了解释
在Wordpress中,您不需要使用jQuery更改所有的DollarSign,只需将其包装在一个无冲突的包装器中,如下所示:
jQuery(document).ready(function($) {
// $() will work just fine as an alias for jQuery() inside of this function
});
在这里面,您将像往常一样使用
$
,使事情变得更简单。解决了以前注册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');
?>
感谢您提供有关abspath和$的良好实践!但我尝试了你的解决方案,现在“不总是”奏效了。如果我加载的页面中有超过1个页面加载,那么所有的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');
?>