3

我为 wordpress 创建了一个小部件。小部件的表单有一些输入框。现在,我想添加一个自定义输入框,它使用我从http://jscolor.com/下载的 javascript 文件

现在,问题是,它不起作用。我已经在 WP_Widget 类的表单函数中注册了这样的 javascript 文件。

require_once('index.php');
add_action('admin_enqueue_scripts', 'pw_load_scripts');

pw_load_scripts 函数在 index.php 中

function pw_load_scripts() {
    wp_register_script('custom-js', plugin_dir_url(__FILE__).'scripts/jscolor.js');
    wp_enqueue_script('custom-js');
}

毕竟这些都行不通。执行此任务的正确方法是什么?

我的 error.log 有这个错误

[Mon Oct 07 21:37:30.591896 2013] [:error] [pid 14853] [client 127.0.0.1:42453] PHP Fatal error:  Cannot redeclare _wp_menu_output() (previously declared in /var/www/wordpress/wp-admin/menu-header.php:36) in /var/www/wordpress/wp-admin/menu-header.php on line 36

谢谢

4

2 回答 2

1

尝试删除:

require_once('index.php');

我不确定你是从哪里得到的。它似乎正在尝试重新加载 wordpress 的 index.php 文件。

于 2013-10-07T16:14:29.347 回答
1

正确的钩子是1将样式脚本排入队列。admin_print_scripts

请注意,admin_footer并且admin_head还接受相同的屏幕定位:'actionname-$hook'

add_action( 'admin_print_scripts-widgets.php', 'admin_enqueue_so_19228543' );

function admin_enqueue_so_19228543()
{
    wp_enqueue_script( 
            'my-script', 
            plugins_url( '/my-script.js', __FILE__ ), 
            array(), // dependencies
            false, // version
            true // on footer
    );
    wp_enqueue_style( 
        'my-style', plugins_url( '/my-style.css', __FILE__ ) 
    );

}

1 Codex 另有说法,但我很确定这是官方立场。我正在研究并会报告回来。


更新

我找不到任何关于admin_print_scripts正确钩子的参考,尽管它有效并且我已经多次看到这种方式使用。为了完整起见,这是如何admin_enqueue_scripts工作的:

add_action( 'admin_enqueue_scripts', 'admin_enqueue_so_19228543' );

function admin_enqueue_so_19228543( $hook )
{
    if( 'widgets.php' != $hook )
        return;

    wp_enqueue_script( 
            'my-script', 
            plugins_url( '/my-script.js', __FILE__ ), 
            array(), // dependencies
            false, // version
            true // on footer
    );
    wp_enqueue_style( 
        'my-style', plugins_url( '/my-style.css', __FILE__ ) 
    );

}

相关:do_action('admin_enqueue_scripts', $hook_suffix) 和 do_action(“admin_print_styles-$hook_suffix”) 语法之间的区别

于 2013-10-07T15:58:19.133 回答