Вопрос или проблема
До версии WP 3.6 можно было удалить поле “alt” (а также поле “caption”) перед показом поста типа “attachment” с помощью хука attachment_fields_to_edit.
Как вы можете видеть также здесь (комментарий пользователя Olemak к решению), начиная с версии 3.6, WP убрал возможность… удалять поля из этого хука.
Вы знаете другие методы, чтобы добиться этого результата в WP, или мне придется прибегнуть к решению только с использованием CSS?
Функция attachment_fields_to_edit
возвращает переменную массива под названием: $form_fields
, которая содержит все данные. Так как это массив, мы можем выполнить любую из этих операций, приведенных в этой ссылке.
Существует несколько методов удаления элемента массива, включая метод unset()
, который, на мой взгляд, является простым в использовании методом.
И для удаления поля caption, я не совсем уверен, но думаю, что вам нужно отменить это: $form_fields['post_excerpt']
, это содержит содержание подписи. Обратите внимание на функцию в этом коде по ссылке.
Ответ или решение
Вопрос об удалении или скрытии полей "alt" и "caption" в административной панели WordPress является актуальным начиная с версии 3.6, когда была убрана возможность удаления полей посредством хука attachment_fields_to_edit
. Рассмотрим способы, которые позволяют достичь этой цели даже в более поздних версиях WordPress.
Проблема и её понимание:
После обновления WordPress до версии 3.6 разработчики сталкиваются с ограничениями в настройке полей вложений, таких как "alt" и "caption", через хук attachment_fields_to_edit
. Это связано с тем, что начиная с данной версии, изменился механизм работы с полями вложений, и простой метод через хуки стал невозможен.
Решение:
-
Использование CSS для скрытия полей:
Это самый простой и неинвазивный метод скрытия полей. Поскольку скрытие происходит только на уровне интерфейса, данные остаются доступными в базе данных..compat-attachment-fields tr.alt-text, .compat-attachment-fields tr.post_excerpt { display: none; }
Данный CSS-код нужно добавить в административный интерфейс, чтобы скрыть соответствующие поля. Этот метод можно использовать через кастомизацию админки, например, с помощью плагина или добавления в
admin_enqueue_scripts
. -
Программное удаление полей через функции:
Воспользуемся знанием о внутренней структуре массивов. Хукattachment_fields_to_edit
действительно возвращает массив$form_fields
, содержащий все поля вложений.add_filter('attachment_fields_to_edit', 'remove_attachment_fields', 10, 2); function remove_attachment_fields($form_fields, $post) { unset($form_fields['image_alt']); // Для поля alt-текста unset($form_fields['post_excerpt']); // Для поля caption return $form_fields; }
Этот код добавляет фильтр, который удаляет ненужные элементы массива, что эффективно убирает их из интерфейса редактирования вложений.
-
Настройка плагина или темы:
Если вы разрабатываете тему или плагин, любой из вышеупомянутых методов можно интегрировать, чтобы произвести требуемую настройку админки для конкретных нужд.
Эти методы помогут вам гибко управлять отображением полей вложений в администраторском интерфейсе WordPress. Это решение является оптимальным с точки зрения удобства, простоты реализации и последующей поддержки системы. Уверен, что в вашем проекте данные подходы помогут добиться желаемого результата.
Если у вас остались вопросы или нужна дальнейшая помощь, не стесняйтесь обращаться за дальнейшими разъяснениями!