在Wordpress小部件管理面板中加载自定义JavaScript文件

时间:2010-11-30 15:06:58

标签: javascript jquery wordpress wordpress-plugin

我正在编写一个包含小部件的新Wordpress插件。窗口小部件配置选项需要jQuery代码通过JSONP从第三方服务器获取它们,并附加事件,以便如果一个下拉列表更改,比如类别,它会动态更改另一个下拉列表的内容,例如子类别。

要实现此效果,我需要在窗口小部件管理面板中加载一些自定义JavaScript文件(在用户将窗口小部件拖放到管理面板中的相关侧边栏后显示的选项)。

这样做的正确方法是什么?我在我的插件类中尝试了以下代码,但它似乎没有加载文件:

class MyPlugin {

    function __construct() {
        add_action('admin_init', array(&$this, 'admin_init'));
        add_action('admin_head', array(&$this, 'admin_load_scripts'));
    }

    function admin_init() {
        wp_register_script('jsonp', 'js/jquery.jsonp-2.1.2.min.js', array('jquery'));
        wp_register_script('my_utils', 'js/my-utils.js', array('jquery', 'jsonp'));
    }

    function admin_load_scripts() {
        wp_enqueue_script('jsonp');
        wp_enqueue_script('my_utils');  
    }

}

提前致谢!

1 个答案:

答案 0 :(得分:1)

这可能是因为钩子admin_head太迟而无法排队 - 请尝试使用load-widgets.php(这也意味着您的脚本不会出现在每个管理页面上! )。

作为旁注,你不需要注册,然后入队 - 你可以在一个电话中同时做这两件事;

wp_enqueue_script('jsonp', 'js/jquery.jsonp-2.1.2.min.js', array('jquery'));
wp_enqueue_script('my_utils', 'js/my-utils.js', array('jquery', 'jsonp'));