Как добавить своё поле в попап медиафайла WordPress через class-плагин

Иногда стандартных полей WordPress для медиафайлов недостаточно. В этой статье я расскажу, как добавить собственное поле в окно редактирования вложения (attachment) — то самое, что появляется при открытии медиафайла в библиотеке. Мы не просто добавим поле, а сделаем это через полноценный class-плагин с сохранением значения на сервере и кастомной обвязкой HTML в окне WordPress Media Library.

Общая идея

WordPress не предлагает «официального» удобного API для кастомизации UI в медиа-библиотеке, но его Backbone.js-архитектура позволяет перехватывать ключевые методы. Мы пойдём немного нестандартным путём: «захватим» метод render() у wp.media.view.Attachment.Details.TwoColumn, чтобы внедрить свою логику и HTML.

Структура плагина

Мы создаём плагин-класс с хуками:

  • admin_init: добавляем кастомное поле через фильтр attachment_fields_to_edit.
  • wp_ajax_save-attachment: добавляем обработчик сохранения данных.
  • Отдельный JS-скрипт, который цепляется к интерфейсу медиа-библиотеки и управляет полем.

Добавляем поле и nonce на сервере

Я покажу как добавляются сами actions и фильтры. Важен как приоритет так и core action, через которые они добавляются.

В методе attachment_fields_to_edit добавим поле и nonce, которые WordPress передаёт в JavaScript.

Это было не сложно, дальше разбираемся с JS.

Перехват рендера окна вложения

В JS-файле мы переопределяем метод render() у представления вложения. Это позволяет вставить свой HTML и инициализировать кастомную логику:

plugin.js

Этот блок был наверное самым сложным в этой схеме. Обещаю, дальше будет проще.

Обработка сохранения

WordPress вызывает save-attachment при сохранении полей. Мы уже подключились к этому ajax-хуку в конструкторе класса-плагина, вот код обработчика:

Данные полей придут в массиве $_POST[‘changes’]. Проверим nonce и запишем поле.

Триггерим сохранение через JavaScript

Поскольку поле у нас планируется как скрытое (можно именно скрытое создать, но я убираю его стилями), и пользователь его напрямую не редактирует — потому WordPress не будет считать его изменённым. Чтобы переломить эту ситуацию, мы вручную триггерим сохранение. Давайте вернемся к началу статьи и доопределим функцию сохранения данных:

Такой подход даёт гибкий контроль над UI и серверной логикой. Хотя он требует вмешательства в внутренности wp.media, результат — полностью интегрированное поле в редактор медиафайлов.

Мало букафф? Читайте есчо !

Иерархия шаблонов в WordPress

Март 23, 2017 г.

Шаблоны в рамках темы Wordpress, как и во многих других CMS, имеют строго определенную иерархию. Что это означает на практике? Когда WP требуется определить ...

Читать

Как войти в wordpress?

Октябрь 8, 2015 г.

Не все шаблоны одинаковы. Если вы поставили шаблон, который не показывает вам ссылок на админ панель, нет привычной формы авторизации - не паникуйте. Функционал wordpress остался на своем месте, только надо знать пути входа. Как войти в панель любого ...

Читать

Бесконечные редиректы на WP сайте после включения HTTPS

Ноябрь 27, 2024 г.

Если сайт находится за неким прокси, который реализует SSL, а на веб-сервере при этом не настроен HTTPS протокол, то WP может начать бесконечный цикл переадресаций. Начинается это сразу после изменения URL домашней страницы в админке. Анамнез ...

Читать

Кнопка для добавления записи в twitter

Октябрь 19, 2011 г.

Если у вас есть сайт, и вы хотите чтобы сослаться на ваш сайт было просто, то самый легкий путь, это воспользоваться добавлением ссылок в соц. сети. Здесь я расскажу о том, как сделать кнопку добавления ссылки на ваш сайт для twitter. "Как это сделать" ...

Читать
 

Комментарии к «Как добавить своё поле в попап медиафайла WordPress через class-плагин»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: