首先是坏消息:我们无法修复您的JS问题(至少只要错误来自core附带的jQuery UI版本,而不是您的自定义定义)。这是WordPress的核心问题。当你看到SVN trunk, 尤其地the main (and only) PHP file 在该文件夹中,您将看到插件甚至没有附带任何脚本。。。至少我是这么想的。然后我发现它确实注册了一个脚本。
add_action( \'wp_enqueue_scripts\', \'jquiw_enqueue_scripts\' );
重点是,我无法通过搜索找到脚本
js
(文件扩展名),因为插件执行以下操作:
function jquiw_initialize_scripts() {
$options = get_option( \'jquiw_options\' );
/* If jQuery code text box not empty then add to header. */
if ( ! empty( $options[\'txtar_jquery_code\'] ) ) {
echo "<script type=\\"text/javascript\\">\\r\\n";
echo $options[\'txtar_jquery_code\'] . "\\r\\n";
echo "</script>\\r\\n";
}
/* If custom CSS text box not empty then add to header. */
if ( ! empty( $options[\'txtar_override_css\'] ) ) {
echo "<style type=\\"text/css\\">\\r\\n";
echo $options[\'txtar_override_css\'];
echo "\\r\\n</style>\\r\\n";
}
}
如您所见,JavaScript和样式定义来自
get_option( \'jquiw_options\' )
. 当我们查看插件文件的其余部分时,我们会看到
<textarea name="jquiw_options[txtar_jquery_code]">
您在其中输入了JavaScript。并不是说将JavaScript之类的可执行文件保存到DB中是完全不好的
bad 问题是当你不消毒时:
function jquiw_init() {
/* Make sure we always have a theme selected. */
$tmp = get_option( \'jquiw_options\' );
if ( ! isset( $tmp[\'drp_jquery_theme\'] ) ) {
$tmp["drp_jquery_theme"] = \'smoothness\';
update_option( \'jquiw_options\', $tmp );
}
register_setting( \'jquiw_plugin_options\', \'jquiw_options\' );
}
正如您所看到的,没有什么可以阻止任何人保存恶意代码。简而言之:放下插件,注册你需要的jQuery UI,然后编写你自己的
.js
包含脚本定义的文件。
自己使用依赖项API-Aquick guide/"How-To" for registering scripts and styles.
您可以通过Google CDN获取CSS。
$theme = \'smoothness\';
"//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/{$theme}/jquery-ui.css"
然后只需添加jQuery UI:
wp_enqueue_script( \'jquery-ui-core\' );
最重要的是,您只需将所需的插件排队并添加即可
jquery-ui-core
作为获得正确加载顺序的依赖项:
wp_enqueue_script( \'jquery-ui-accordion\', null, array( \'jquery-ui-core\', ) );
最后,从自定义文件中注册定义。在这里,您可以避免使用您支持的浏览器不喜欢的所有内容。
确保wrap that up in a custom plugin 你自己的。