The media_post_single_attachment_fields_to_edit() WordPress PHP function retrieves the post non-image attachment fields to edit form fields.
Usage
media_post_single_attachment_fields_to_edit($form_fields, $post);
Input:
$form_fields: An array of attachment form fields.$post: The WP_Post attachment object.
Output: An array of attachment form fields.
Parameters
$form_fields(array) – An array of attachment form fields.$post(WP_Post) – The WP_Post attachment object.
More information
See WordPress Developer Resources: media_post_single_attachment_fields_to_edit
Examples
Add custom fields to attachment form fields
In this example, we will add a custom field to the attachment form fields.
add_filter('attachment_fields_to_edit', 'add_custom_attachment_fields', 10, 2);
function add_custom_attachment_fields($form_fields, $post) {
// Adding custom field 'custom_field_key' with a label and input element
$form_fields['custom_field_key'] = array(
'label' => 'Custom Field Label',
'input' => 'text',
'value' => get_post_meta($post->ID, 'custom_field_key', true),
);
return $form_fields;
}
Modify existing attachment form fields
In this example, we modify the label of the existing ‘post_excerpt’ field.
add_filter('attachment_fields_to_edit', 'modify_existing_attachment_fields', 10, 2);
function modify_existing_attachment_fields($form_fields, $post) {
// Modifying the label of 'post_excerpt' field
$form_fields['post_excerpt']['label'] = 'New Excerpt Label';
return $form_fields;
}
Remove attachment form fields
In this example, we will remove the ‘url’ field from the attachment form fields.
add_filter('attachment_fields_to_edit', 'remove_attachment_fields', 10, 2);
function remove_attachment_fields($form_fields, $post) {
// Removing the 'url' field from the attachment form fields
unset($form_fields['url']);
return $form_fields;
}
Change input type of an attachment form field
In this example, we will change the input type of the ‘post_content’ field to a ‘textarea’.
add_filter('attachment_fields_to_edit', 'change_input_type_attachment_fields', 10, 2);
function change_input_type_attachment_fields($form_fields, $post) {
// Changing the input type of 'post_content' field to 'textarea'
$form_fields['post_content']['input'] = 'textarea';
return $form_fields;
}
Set a custom attribute for an attachment form field
In this example, we will set a custom attribute (data-custom-attribute) for the ‘post_title’ field.
add_filter('attachment_fields_to_edit', 'set_custom_attribute_attachment_fields', 10, 2);
function set_custom_attribute_attachment_fields($form_fields, $post) {
// Setting a custom attribute 'data-custom-attribute' for the 'post_title' field
$form_fields['post_title']['extra_rows'] = array(
'data-custom-attribute' => 'Custom Attribute Value'
);
return $form_fields;
}