Хук attachment_fields_to_edit
в WordPress позволяет добавлять произвольные поля к форме редактирования вложений (медиафайлов) в административной панели. Это может быть полезно для добавления дополнительной информации к изображениям и другим типам вложений, например, меток, полей для заметок или любой другой информации.
apply_filters( 'attachment_fields_to_edit', array $form_fields, WP_Post $post );
Параметры:
- $form_fields — массив с данными полей формы вложения.
- $post — объект
WP_Post
, представляющий вложение.
Пример добавления текстового поля к вложению
Рассмотрим пример, где добавляется текстовое поле для дополнительной информации о медиафайле.
function add_custom_text_field( $form_fields, $post ) {
$field_value = get_post_meta( $post->ID, 'custom_text_field', true );
$form_fields['custom_text_field'] = array(
'label' => 'Дополнительный текст',
'input' => 'text',
'value' => $field_value,
'helps' => 'Добавьте описание для этого файла.'
);
return $form_fields;
}
add_filter( 'attachment_fields_to_edit', 'add_custom_text_field', 10, 2 );
Чтобы сохранить данные поля, используем хук attachment_fields_to_save
:
function save_custom_text_field( $post, $attachment ) {
if ( isset( $attachment['custom_text_field'] ) ) {
update_post_meta( $post['ID'], 'custom_text_field', sanitize_text_field( $attachment['custom_text_field'] ) );
} else {
delete_post_meta( $post['ID'], 'custom_text_field' );
}
return $post;
}
add_filter( 'attachment_fields_to_save', 'save_custom_text_field', 10, 2 );
Пример добавления чекбокса к вложению
Иногда требуется добавить чекбокс для указания определенных характеристик файла. Например, можно использовать поле для обозначения медиафайлов как «выбранных» для карусели на сайте.
function add_custom_checkbox( $form_fields, $post ) {
$is_checked = (bool) get_post_meta( $post->ID, 'featured_checkbox', true );
$form_fields['featured_checkbox'] = array(
'label' => 'Добавить в избранное',
'input' => 'html',
'html' => '<input type="checkbox" id="attachments-'.$post->ID.'-featured_checkbox" name="attachments['.$post->ID.'][featured_checkbox]" value="1"'.($is_checked ? ' checked="checked"' : '').' />',
);
return $form_fields;
}
add_filter( 'attachment_fields_to_edit', 'add_custom_checkbox', 10, 2 );
Сохраняем данные чекбокса:
function save_custom_checkbox( $post, $attachment ) {
if ( isset( $attachment['featured_checkbox'] ) ) {
update_post_meta( $post['ID'], 'featured_checkbox', sanitize_text_field( $attachment['featured_checkbox'] ) );
} else {
delete_post_meta( $post['ID'], 'featured_checkbox' );
}
return $post;
}
add_filter( 'attachment_fields_to_save', 'save_custom_checkbox', 10, 2 );
Пример добавления текстового поля с указанием местоположения
Рассмотрим, как добавить поле «Местоположение» к вложению, которое позволит указывать, где было сделано изображение.
function add_location_field( $form_fields, $post ) {
$location_value = get_post_meta( $post->ID, 'location', true );
$form_fields['location'] = array(
'label' => 'Местоположение',
'input' => 'text',
'value' => $location_value,
'helps' => 'Укажите, где было сделано это изображение.'
);
return $form_fields;
}
add_filter( 'attachment_fields_to_edit', 'add_location_field', 10, 2 );
Сохранение поля «Местоположение»:
function save_location_field( $post, $attachment ) {
if ( isset( $attachment['location'] ) ) {
update_post_meta( $post['ID'], 'location', sanitize_text_field( $attachment['location'] ) );
} else {
delete_post_meta( $post['ID'], 'location' );
}
return $post;
}
add_filter( 'attachment_fields_to_save', 'save_location_field', 10, 2 );
Заключение
Хук attachment_fields_to_edit
в WordPress позволяет гибко управлять полями вложений, добавляя новые элементы интерфейса. Этот хук полезен для настройки метаданных вложений, улучшения юзабилити административной панели и упрощения работы с медиафайлами.