私はプラグインPopup Makerとまったく同じ問題に直面しています。私は役に立つかもしれないが、私が見ている唯一の問題は、wp_enqueue_scriptを使って注文プラグインがJSをロードすることを常に制御できないということだ。
私がしたことは、自分のスクリプトにselect2(DUH)が必要になったため、スクリプトのエンクロージャ内でこのようなことをしました。後で代わりに私が.pumSelect2()
を使用.select2()
を呼び出した後
$.fn.pumSelect2 = $.fn.select2;
。
これは私がv4を使用している、他の人がv3.5を使用している、自分のadmin.jsファイルにブートストラップしていて、select2がすでにロードされていてもロードするという状況です。
このようにすべてがハックですが、wp_enqueue_scriptを使用してロードすることで正しい方法で作業しているためです。
エンキューされている場合はselect2もデキューします。今
については
// Deregister older versions, loaded by Types, Advanced Custom Fields etc.
if (wp_script_is('select2', 'registered')) {
wp_deregister_script('select2');
}
wp_register_script('select2', $js_dir . 'select2.full' . $suffix, array('jquery'), '4.0.1');
`
最後の方法はさらにテストの後や他の多くのプラグインはおそらくこれは私が思い付いたものです壊れるカスタマイズで古いバージョンを使用しているため。私select2.full.jsで
のjQueryをロードする開口部との通話工場
(function (factory) {
var existingVersion = jQuery.fn.select2 || null;
if (existingVersion) {
delete jQuery.fn.select2;
}
if (typeof define === 'function' && define.amd !== undefined && define.amd) {
// AMD. Register as an anonymous module.
define(['jquery'], factory);
} else if (typeof exports === 'object') {
// Node/CommonJS
factory(require('jquery'));
} else {
// Browser globals
factory(jQuery);
}
jQuery.fn.pumselect2 = jQuery.fn.select2;
if (existingVersion) {
delete jQuery.fn.select2;
jQuery.fn.select2 = existingVersion;
}
}(function (jQuery) {
について
ファイル基本的に私は、この場合のpumselect2に新しい名前にそれをブートストラップし、あった場合以前にロードしたバージョンを復元します。それ以外の場合は、スレートを消去して、別のものがロードされても競合が発生しないようにします。
また、wp_enqueue_scriptハンドルをpumselect2に変更して、他の誰かがselect2をロードしてもロードされるようにしました。
希望に役立ちます。