Как скрыть / удалить поле “alt” или “caption” вложения в админке?

Вопрос или проблема

До версии 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. Это связано с тем, что начиная с данной версии, изменился механизм работы с полями вложений, и простой метод через хуки стал невозможен.

Решение:

  1. Использование CSS для скрытия полей:
    Это самый простой и неинвазивный метод скрытия полей. Поскольку скрытие происходит только на уровне интерфейса, данные остаются доступными в базе данных.

    .compat-attachment-fields tr.alt-text,
    .compat-attachment-fields tr.post_excerpt {
       display: none;
    }

    Данный CSS-код нужно добавить в административный интерфейс, чтобы скрыть соответствующие поля. Этот метод можно использовать через кастомизацию админки, например, с помощью плагина или добавления в admin_enqueue_scripts.

  2. Программное удаление полей через функции:
    Воспользуемся знанием о внутренней структуре массивов. Хук 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;
    }

    Этот код добавляет фильтр, который удаляет ненужные элементы массива, что эффективно убирает их из интерфейса редактирования вложений.

  3. Настройка плагина или темы:
    Если вы разрабатываете тему или плагин, любой из вышеупомянутых методов можно интегрировать, чтобы произвести требуемую настройку админки для конкретных нужд.

Эти методы помогут вам гибко управлять отображением полей вложений в администраторском интерфейсе WordPress. Это решение является оптимальным с точки зрения удобства, простоты реализации и последующей поддержки системы. Уверен, что в вашем проекте данные подходы помогут добиться желаемого результата.

Если у вас остались вопросы или нужна дальнейшая помощь, не стесняйтесь обращаться за дальнейшими разъяснениями!

Оцените материал
Добавить комментарий

Капча загружается...