Javascript Can';不要在Wordpress中包含自定义JS

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

我的Wordpress页面加载(使用jQuery的
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');
?>