在Wordpress插件中排队Javascript和jQuery

时间:2014-04-15 00:48:06

标签: javascript php jquery wordpress plugins

我是PHP的初学者,我正在尝试并且未能让它在Javascript / jQuery中加载基本测试警报。我正在为Wordpress网站创建一个插件,我只需要确保我能够在页面上成功运行Javascript程序,然后才真正开始编写它。以下是我到目前为止的情况:

.js文件只是一个用jQuery编写的测试警告。

$(document).ready(function () {

    alert("Your plugin's working");

});

PHP文件是一个非常简单的插件,用于运行警报。

<?php
/**
 * Plugin Name: PanoramaJKM
 * Plugin URI: unknown
 * Description: Should alert on loading
 * Version: 0.1
 * Author: Matt Rosenthal
 * Author URI: unknown
 */

    function loadQuery() {
        if (!is_admin()) {
            wp_enqueue_script('jquery');
        }
    }

    add_action('init', 'loadQuery');


    function headsUp() {
        wp_enqueue_script('alert-js', plugins_url('/js/alert.js', __FILE__), array('jquery'));
    }

    add_action('wp_enqueue_scripts', 'headsUp');
?>

每当我尝试在我的Wordpress网站上加载插件时,JS控制台都会向我发出此错误:

Uncaught TypeError: undefined is not a function 

如果我将alert.js文件更改为没有jQuery,我可以获取JS警告。但是,我需要jQuery来编写最终的插件,我觉得我错过了一些容易修复的东西。任何帮助将不胜感激!我已经尝试过其他SO帖子和几个在线指南的建议但没有成功。

3 个答案:

答案 0 :(得分:2)

WordPress在noconflict模式下加载jQuery,因为它也附带Prototype。所以,你不能用$引用jQuery,你需要拼出jQuery。您的Javascript代码必须是:

jQuery(document).ready(function () {
    alert("Your plugin's working");
});

或者,您可以将代码包装在一个自我执行的匿名函数中,该函数在其中定义$:

(function($) {
    $(document).ready(function () {
        alert("Your plugin's working");
    });
})(jQuery);

答案 1 :(得分:2)

戴夫罗斯&#39;回答是现货。我要补充一点,这是最常见的格式:

jQuery(document).ready(function($) // <-- $ as shortcut for jQuery
{   
    alert("Your plugin's working");
});

而且你不需要add_action('init', 'loadQuery');。 jQuery已作为alert-js的依赖项加载,正确的入队位置是动作挂钩wp_enqueue_scripts(仅在前端运行)。

答案 2 :(得分:1)

我相信在wordpress中使用$会有问题。尝试使用jQuery(document).ready(....