Я использую Select2 в своем плагине WordPress, и мне нужно изолировать загруженную версию, чтобы избежать конфликтов с другими плагинами, также использующими Select2.
Я нашел этот ответ @ Кевин Браун , где он предлагает сохранить функцию select2 в переменную сразу после загрузки и перед ее удалением, чтобы избежать проблем с другими нагрузками:
<script src="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0/js/select2.js"></script>
<script>
var myOwnSelect2 = $.fn.select2;
delete $.fn.select2;
</script>
Проблема, с которой я столкнулсяв том, что он работает на страницах edit-post.php, но не где-либо еще.Я имею в виду, что «выбрать» теги / элементы заменяются на страницах edit-post.php, но не на странице настроек моего плагина.Код на каждой странице выглядит следующим образом:
edit-post.php
HTML
<div class="myplugin-metabox">
...
<select name="_myplugin_item" class="searchable select2-hidden-accessible" data-placeholder="Select an item..." tabindex="-1" aria-hidden="true">
<option>...</option>
</select>
...
</div>
Javascript
myOwnSelect2.call( $('.myplugin-metabox select'), { dropdownAutoWidth: true, minimumResultsForSearch: Infinity } );
admin.php? Page = myplugin
HTML
<div id="myplugin-settings">
...
<select id="option-1" name="myplugin-option-1" class="">
<option value="all">...</option>
...
</select>
...
</div>
Javascript
myOwnSelect2.call( $('#myplugin-settings select'), { dropdownAutoWidth: true, minimumResultsForSearch: Infinity } );
Если я не использую какой-либо метод изоляции, все в моем плагине работает нормально ... но мне нужна изоляция, потому что многие другие популярные плагины загружают свою собственную версию / копию Select2.
Инициализация Javascript выполняется в том же файле.Сохраняя изоляцию, если я удаляю инициализацию для правок edit-post.php, селекторы на странице настроек моего плагина не преобразуются в выпадающие списки Select2.
Любые предположения о том, что я могу делать неправильно?
Спасибо!