The attachment_fields_to_save WordPress PHP filter allows you to modify the attachment fields before they are saved in the database.
Usage
add_filter('attachment_fields_to_save', 'my_custom_attachment_fields_to_save', 10, 2); function my_custom_attachment_fields_to_save($post, $attachment) { // your custom code here return $post; }
Parameters
$post
(array): An array of post data.$attachment
(array): An array of attachment metadata.
More information
See WordPress Developer Resources: attachment_fields_to_save
Examples
Add a custom field to attachment metadata
This example adds a custom field called “credit” to the attachment metadata.
add_filter('attachment_fields_to_save', 'add_credit_to_attachment', 10, 2); function add_credit_to_attachment($post, $attachment) { if (isset($attachment['credit'])) { $post['post_excerpt'] = sanitize_text_field($attachment['credit']); } return $post; }
Remove certain metadata from the attachment
This example removes the “caption” metadata from the attachment.
add_filter('attachment_fields_to_save', 'remove_caption_from_attachment', 10, 2); function remove_caption_from_attachment($post, $attachment) { $post['post_excerpt'] = ''; return $post; }
Change the attachment title
This example modifies the attachment title by adding a prefix.
add_filter('attachment_fields_to_save', 'change_attachment_title', 10, 2); function change_attachment_title($post, $attachment) { $post['post_title'] = 'My Prefix - ' . $post['post_title']; return $post; }
Set attachment alt text based on the title
This example sets the attachment alt text based on the attachment’s title.
add_filter('attachment_fields_to_save', 'set_attachment_alt_text', 10, 2); function set_attachment_alt_text($post, $attachment) { $attachment['image_alt'] = $post['post_title']; return $post; }
Add a custom field to attachment metadata and display it in the media library
This example adds a custom field called “location” to the attachment metadata and displays it in the media library.
add_filter('attachment_fields_to_edit', 'add_location_field', 10, 2); add_filter('attachment_fields_to_save', 'save_location_field', 10, 2); function add_location_field($form_fields, $post) { $form_fields['location'] = array( 'label' => 'Location', 'input' => 'text', 'value' => get_post_meta($post->ID, '_location', true), ); return $form_fields; } function save_location_field($post, $attachment) { if (isset($attachment['location'])) { update_post_meta($post['ID'], '_location', $attachment['location']); } return $post; }