Как сохранить настраиваемые поля для вложений

Я добавил пользовательскую ссылку «Купить сейчас» на странице редактирования мультимедиа, но я не могу сохранить эти данные, как другие типы сообщений. Есть ли другой крюк, который запускается после добавления / редактирования / обновления носителя / вложения?

Я использую эту функцию:

function update_attachment_extra_info( $post_id ) { // code to update data } add_action( 'save_post', 'update_attachment_extra_info' ); 

Но этот крючок не срабатывает.

Solutions Collecting From Web of "Как сохранить настраиваемые поля для вложений"

Вот пример, который добавляет пользовательское поле мультимедиа с именем Buy Now . В этом примере сохраняется значение настраиваемого поля на экране наложения медиаданных через ajax, а также экран редактирования мультимедиа (не ajax).

 /** * Add custom field to media */ add_filter( 'attachment_fields_to_edit', 'wpse256463_attachment_fields', 10, 2 ); function wpse256463_attachment_fields( $fields, $post ) { $meta = get_post_meta( $post->ID, 'buy_now', true ); $fields['buy_now'] = array( 'label' => __( 'Buy Now', 'text-domain' ), 'input' => 'text', 'value' => $meta, 'show_in_edit' => true, ); return $fields; } /** * Update custom field within media overlay (via ajax) */ add_action( 'wp_ajax_save-attachment-compat', 'wpse256463_media_fields', 0, 1 ); function wpse256463_media_fields() { $post_id = $_POST['id']; $meta = $_POST['attachments'][ $post_id ]['buy_now']; update_post_meta( $post_id , 'buy_now', $meta ); clean_post_cache( $post_id ); } /** * Update media custom field from edit media page (non ajax). */ add_action( 'edit_attachment', 'wpse256463_update_attachment_meta', 1 ); function wpse256463_update_attachment_meta( $post_id ) { $buy_now = isset( $_POST['attachments'][ $post_id ]['buy_now'] ) ? $_POST['attachments'][ $post_id ]['buy_now'] : false; update_post_meta( $post_id, 'buy_now', $buy_now ); return; }