Как добавить своё поле в попап медиафайла 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, результат — полностью интегрированное поле в редактор медиафайлов.

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

Как добавить в contact form 7 плейсхолдер элемента

Апрель 1, 2023 г.

Неудобно, что прямо в редакторе нельзя задать нужные атрибуты, приходится искать либо в коде, чтобы подсмотреть как это реализовано, или на форумах. Нужно было создать элементы формы с атрибутом placeholder. Оказалось, что wpcf7 понимает следующую ...

Читать

Ещё один вариант подключения картинки в редактор таксономии

Июль 7, 2017 г.

Предыдущий вариант встраивания картинки в редактор терминов меня не устраивает в части работы диалога и того, что в базу сохраняется URL, а не ID картинки (thumbnail). Что не так с диалогом? Использован диалог выбора URL картинки встроенного в WP ...

Читать

Обновление Inactive User Deleter плагина до v 1.1

Ноябрь 26, 2012 г.

Вспомнил про свой первый плагин для вордпресса только потому, что в гостевую мне написал один из пользователей этого плагина. Зашел на страницу плагина на вордпресс.org, почитал форум поддержки... И понял, что пора обновить плагин. Любой проект, ...

Читать

WordPress: вывод рубрик и тегов таксономии в шаблоне single.php

Июль 17, 2025 г.

Если вы хотите отобразить рубрики (категории) и теги поста в шаблоне single.php - т.е. шаблоне одиночной статьи, WordPress предоставляет удобные функции из API-шаблонов. В этой статье разберем, как их использовать правильно и оформить вывод. Зачем ...

Читать
 

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

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



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