插件jQuery版本与主题jQuery版本:搜索最佳实践

时间:2013-02-11 作者:Vincent

我已经构建了一个基于jQuery的Wordpress插件,我正在使用wp_enqueue_script(\'jquery\');让一切顺利。

假设Wordpress加载的jQuery的默认版本是1.7.2,如果用户基于不同版本的jQuery安装主题,会发生什么情况?

  1. What version of jQuery will run in the page where the plugin is called: jQuery的默认版本(我使用的是wp_enqueue_脚本(\'jQuery\'))还是主题中调用的jQuery版本?

  2. I can\'t figure out what version of jQuery will be used if a page includes multiple plugins and if each one of theme uses a different of jQuery? 一切都会混乱,最终导致冲突吗?

    谢谢你的帮助

2 个回复
最合适的回答,由SO网友:Wyck 整理而成

正如其他人提到的,对此没有很好的答案,最终你无法控制其他人如何编写插件/主题,也没有命名标准wp_enqueue_script\'s、 虽然可能应该有。

此外,目前还没有检查jQuery是否使用wp_enqueue_script, 虽然这在模板级别上很容易做到window.jQuery.

一些注释,因为这有点奇怪:

Scenario 1 - 同名

如果您使用该名称jquery 要将脚本排队,例如:

wp_enqueue_script( \'jquery\', \'/ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js\');
它不会将此链接排入队列,而是使用默认的WordPress捆绑jQuery,即:

wp-includes/js/jquery/jquery.js?ver=x.x.x (latest bundled)
原因是您使用了相同的名称,这是WordPress首先注册的名称。

Scenario 2 - 差异名称

如果使用不同的名称,例如:

wp_enqueue_script( \'jquery-hi\',\'/ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js\');
它只会排队jquery-hi 而不是捆绑的WordPress jQuery。

Scenario 3 -多个名称

如果您有多个使用不同名称的插件/主题,例如:

wp_enqueue_script( \'jquery-hi\',\'/ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js\');
wp_enqueue_script( \'jquery-pie\',\'/ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js\');
这将使他们两人排队。

注意:永远不要在管理中加载您自己的jQuery(或其他捆绑的wp脚本)。

SO网友:Mark Kaplun

不要认为你的问题有好的答案。这是一种常见的问题dynamic linking 正在使用,我从来没有听说过一个好的通用解决方案。正如@webaware在评论中所说,最终解决此类冲突是用户的责任。

最佳实践是依赖于随core提供的JS,并在新WordPress版本发布时测试插件,以确保它与所包含库的新版本兼容。

结束

相关推荐

如何将jQuery onClick事件添加到发布帖子按钮?

我想在“发布帖子”按钮中添加一个简单的确认事件,这样当我的客户点击“发布”时,它会问他是否确定,他点击“是”或“取消”,然后帖子发布或不发布。我是WordPress的新手。。。或者至少我只做过主题和有限的插件编程。我确实在中找到了“发布”按钮的metabox代码edit-form-advanced.php:add_meta_box(\'submitdiv\', __(\'Publish\'), \'post_submit_meta_box\', null, \'side\', \'core\');