attachment_fields_to_save
Это хук WordPress - attachment_fields_to_save. Плагин его просто использует.
Сохраняет произвольное поле добавленное к изображению (вложению) с помощью хука attachment_fields_to_edit.
Срабатывает автосохранение при загрузке изображения например в записях (проверить, потому что не выводится надпись "Сохраняем...")
Использование
add_filter( 'attachment_fields_to_save', 'wp_kama_attachment_fields_to_save_filter', 10, 2 );
/**
* Function for `attachment_fields_to_save` filter-hook.
*
* @param array $post An array of post data.
* @param array $attachment An array of attachment metadata.
*
* @return array
*/
function wp_kama_attachment_fields_to_save_filter( $post, $attachment ){
// filter...
return $post;
}
- $post(массив)
- Массив данных вложения (записи).
- $attachment(массив)
- Массив мета-данных вложения (записи).
Примеры
#1 Сохраняем данные метаполя
Допустим мы добавили метаполе carousel_price (см. хук attachment_fields_to_edit()).
// Добавим метаполе для изображения
add_filter( 'attachment_fields_to_edit', 'pon_attachment_fields_to_edit', null, 2 );
function pon_attachment_fields_to_edit( $form_fields, $post ){
$form_fields['carousel_price'] = array(
'label' => 'Цена (если нужно)',
'input' => '',
'value' => get_post_meta( $post->ID, 'carousel_price', true )
);
return $form_fields;
}
// Сохраняем данные метаполя
add_filter("attachment_fields_to_save", "pon_attachment_fields_to_save", null, 2);
function pon_attachment_fields_to_save($post, $attachment) {
if( isset($attachment['carousel_price']) ){
update_post_meta( $post['ID'], 'carousel_price', $attachment['carousel_price'] );
}
else
delete_post_meta( $post['ID'], 'carousel_price' );
return $post;
}
Где вызывается хук
attachment_fields_to_save
acf/pro/fields/class-acf-field-gallery.php 183
$post = apply_filters( 'attachment_fields_to_save', $post, $changes );
Где используется хук в Advanced Custom Fields PRO
acf/includes/forms/form-attachment.php 36
add_filter( 'attachment_fields_to_save', array( $this, 'save_attachment' ), 10, 2 );