我为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
谢谢
答案 0 :(得分:1)
正确的钩子是admin_print_scripts
1 ,用于将样式和脚本排入队列。
请注意,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 食典委其他说法,但我很确定这是官方立场。我正在研究并将报告。
更新
我找不到任何对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__ )
);
}
答案 1 :(得分:1)
尝试删除:
require_once('index.php');
我不确定你从哪里得到这个。它似乎试图重新加载wordpress的index.php文件。