Say, for example, that you want to add the ability to add a YouTube link to a media file.
function show_media_extra_attachment_fields($form_fields, $post) {
$form_fields['youtube_link'] = array(
'label' => 'YouTube link',
'input' => 'text',
'value' => get_post_meta($post->ID, 'youtube_link', true),
'helps' => 'If provided, a youtube video will be added',
);
return $form_fields;
}
add_filter('attachment_fields_to_edit', 'show_media_extra_attachment_fields', 10, 2);
function save_media_extra_attachment_fields($post, $attachment) {
if (isset($attachment['youtube_link']))
update_post_meta($post['ID'], 'youtube_link', $attachment['youtube_link']);
return $post;
}
add_filter('attachment_fields_to_save', 'save_media_extra_attachment_fields', 10, 2);
If you want to display the fields in your attachments template, then simply paste the following codes inside the loop:
$youtube_link = get_post_meta($post->ID, 'youtube_link', true);
Learning Resources
wpbeginner – How to Add Additional Fields to the WordPress Media Uploader