Чтобы расширить: я хотел бы использовать тот же модальный код / внешний вид (который используется в wp.media.Modal, wp.media.FocusManager), чтобы открыть модальный собственный диалог, а не редактор мультимедиа. Раньше для такого рода вещей я использовал Thickbox, но wp.media.Modal - это путь будущего модалов - не говоря уже о том, что он выглядит круто.
Я немного поковырялся в источнике JS и нашел пару возможных решений:
- "Займи" код media-views.js и используй его в моем плагине.
- «Расширьте» wp.media.Modal (в конце концов, это Backbone View).
- Создать собственную реализацию, jQueryUI и т. Д.
- Просто сдайся и используй толстый ящик.
Заимствование кажется немного менее опасным, чем использование wp.media.Model.extend ({}), но расточительно. Я не большой поклонник модальностей jQueryUI, но с этим можно справиться. В то же время, я мог бы сделать пользовательскую реализацию модалов (или основать ее на другой библиотеке).
Такое ощущение, что я упускаю что-то очевидное: кто-нибудь еще справился с этим, или новый модальный код библиотеки мультимедиа «слишком новый», чтобы его можно было использовать повторно?
Ответы:
Поздний ответ и редактирование. Отказ от ответственности: ниже нет кода для копирования и вставки.
Набросок
Поскольку я никогда не пытался использовать медиа-модал для чего-то еще, вот краткий обзор, набросанный путем выделения части из проекта, в котором я сейчас работаю. Это не готовый пример, но он должен приблизить вас достаточно близко. Просто внимательно прочитайте комментарии и внедрите следующий PHP в ваши объекты.
PHP
В нашем конструкторе мы регистрируем наши скрипты, добавляем мета-блоки, содержащие информацию и мультимедийную кнопку, фильтруем дополнительные типы MIME (например, ZIP) и заботимся о сохранении дополнительных данных:
Убедитесь, что вы прерываете работу, если вам не нужен этот скрипт на определенной странице. Это экономит память, время запроса и помогает поддерживать вашу установку в чистоте.
Затем мы добавляем мета-поле. Внутри функции мы можем положиться на свойство
$post
objectspost_type
, которое также будет установлено для новых сообщений. Поскольку мы уже зарегистрировали обратные вызовы в конструкторе для соответствующих контекстных хуков, мы можем просто взять любой тип записи.Дополнительные типы MIME
Просто добавьте массив, который либо переопределяет, либо добавляет к стандартным MIME-типам Media Modal. Вы также можете добавить или переопределить другие настройки. Просто
var_dump( $settings );
чтобы увидеть, что обеспечивает обратный вызов. Также убедитесь, что мы не перехватываем неправильный тип сообщения.Визуализировать контент
Сохранить данные
Наконец, мы гарантируем, что наши данные будут сохранены правильно и будут проверены. Используйте все
esc_*()
функции, приведение типов, одноразовые номера, а что нет.Последнее замечание перед тем, как перейти к примеру с JS: код не работает в текущем проекте. Так что он, как уже упоминалось, не будет работать по умолчанию! Это всего лишь руководство и ничего больше.
Javascript
Сам javascript довольно прост. Не. Но, как вы можете видеть, я внедряю оба jQuery как пользовательский локализованный объект сценария в функцию. С этого момента вам придется добавить любую логику, которая вам может понадобиться. Базовое окружение для разных состояний и обратных вызовов предоставляется и
console.log()
присутствует.Учебники
Доминик Шиллинг (Dominik Schilling) - автор медиа-менеджера WP 3.5 - написал набор демонстраций для медиа-модалов. Вы можете просмотреть их на GitHub .
источник