Создание пользовательских полей для вложений (медиафайлов)

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

Стандартный набор полей вложений выглядит следующим образом:

Пользовательские поля для вложений

Итак, для создания пользовательского поля в WordPress предусмотрено 2 хука-фильтра: один, собственно, для добавления полей в диалоговое окно управления медиафайлом attachment_fields_to_edit и второй фильтр для сохранения значений, введенных в пользовательские поля attachment_fields_to_save.

Для добавления нового пользовательского поля необходимо добавить следующий код в файл functions.php:

function custom_attachment_fields_to_edit($form_fields, $post) {
    $form_fields['custom1'] = array(
        'label' => __('Текстовое поле'),
        'input' => 'text',
        'value' => get_post_meta($post->ID, '_custom1', true),
        'helps'  => __('Комментарий к текстовому полю')
    );
    return $form_fields;
}
add_filter('attachment_fields_to_edit', 'custom_attachment_fields_to_edit', 11, 2);

function custom_attachment_fields_to_save($post, $attachment) {
    if( isset($attachment['custom1']) ){
        update_post_meta($post['ID'], '_custom1', $attachment['custom1']);
    }
    return $post;
}
add_filter( 'attachment_fields_to_save','custom_attachment_fields_to_save', 11, 2);

После перезагрузки странички мы увидим, что созданное поле добавилось и мы можем ввести в него значение:

Пользовательские поля для вложений

Массив $form_fields содержит несколько опций, которые позволяют создать поля для ввода разных типов