Кнопка «Добавить медиа» позволяет добавлять любые материалы в текущий редактор. Мне нужно «Загрузить на эту страницу» из раскрывающегося меню, чтобы быть единственным доступным вариантом. Некоторое время назад я нашел решение где-то вроде этого:
jQuery(function($){ $(document).on("DOMNodeInserted", function(){ // Lock uploads to "Uploaded to this post" $('select.attachment-filters [value!="uploaded"]').remove() $('select.attachment-filters').trigger('change'); }); })
Однако это событие конфликтует с моим другим плагином, потому что этот плагин будет вставлять более 100 узлов, и этот фрагмент кода очень замедлит этот процесс: для загрузки этого события требуется 2 минуты дольше.
Поэтому я ищу лучшее решение, которое поможет вам сэкономить время и ресурсы браузера. Любое предложение приветствуется!
Возможно, я уже думал, но решение проще, чем я думал.
Мне просто нужно ограничить обработчик события каким-то элементом, поэтому другие несвязанные не будут запускать обработчик. В этом случае .media-modal
является основным родителем элемента медиабиблиотеки, поэтому я указываю этот дополнительный селектор для события, как .media-modal
ниже:
jQuery(document).on("DOMNodeInserted", '.media-modal', function() { // ... }
И после тестирования это ускорит вторую вставку узлов.
Это то, что я нашел, которое я использую регулярно. На самом деле это то же самое, что вы используете, но помещаете его в нижний колонтитул администратора, так что это одна из последних вещей для загрузки. Может, это быстрее?
function media_library_filter(){ ?> <script type="text/javascript"> jQuery(document).on("DOMNodeInserted", function(){ jQuery('select.attachment-filters [value="uploaded"]').attr( 'selected', true ).parent().trigger('change'); }); </script> <?php } add_action( 'admin_footer-post-new.php', 'media_library_filter' ); add_action( 'admin_footer-post.php', 'media_library_filter' );
Вы можете просмотреть это, но он старый:
Изменить представление по умолчанию Media Library в 3.5?