Salvar informações da câmera como metadados no upload de imagens?

Estou tentando que o WordPress salve automaticamente os metadados de “crédito” armazenados nas imagens que estou carregando. Eu sei que isso seria inserido como um meta meta de pós personalizado usando update_post_meta() .

As informações de “crédito” são coletadas por wp_read_image_metadata() , mas media_handle_upload() não a usa. Ele usa apenas as informações “legenda” e “título” coletadas da imagem para post_content e post_title respectivamente.

Eu encontrei vários exemplos de como adicionar campos de metadados de anexos personalizados após o upload ao editar a imagem, mas como o WP já está reunindo essa informação dos metadados da imagem, eu gostaria de encontrar uma maneira de salvá-la como a imagem é carregado.

Não consigo media_handle_upload() quais os passos a seguir para se conectar a media_handle_upload() (não parece haver um gancho) para que eu possa chamar update_post_meta para salvar a linha “crédito” para o anexo.

Solutions Collecting From Web of "Salvar informações da câmera como metadados no upload de imagens?"

Você pode usar wp_generate_attachment_metadata :

Esta function gera metadados para um anexo de imagem. Ele também cria uma miniatura e outros tamanhos intermediários do anexo da imagem com base nos tamanhos definidos no Settings_Media_Screen.

O segundo argumento do filtro é o ID do anexo, portanto, não deve ser um problema para adicionar a meta do post:

 add_filter( 'wp_generate_attachment_metadata', 'manipulate_metadata_wpse_91177', 10, 2 ); function manipulate_metadata_wpse_91177( $metadata, $attachment_id ) { // var_dump( $metadata['image_meta'] ); // Credit is inside $metadata['image_meta']['credit'] return $metadata; } 

Inspecionando o conteúdo de $metadata['image_meta'] com FirePHP, estes são os resultados:

 aperture: 4 camera: "DMC-FZ100" caption: "" copyright: "" created_timestamp: 1352136868 credit: "" focal_length: "9.2" iso: "100" shutter_speed: "0.003125" title: "Double Dip" 

[Atualizar]
Teste completo adicionando uma coluna personalizada na canvas da Biblioteca de mídia ( /wp-admin/upload.php ) para exibir as informações de meta do post:

 add_filter( 'wp_generate_attachment_metadata', 'manipulate_metadata_wpse_91177', 10, 2 ); add_filter( 'manage_upload_columns', 'camera_info_column_wpse_91177' ); add_action( 'manage_media_custom_column', 'camera_info_display_wpse_91177', 10, 2 ); function manipulate_metadata_wpse_91177( $metadata, $attachment_id ) { update_post_meta( $attachment_id, 'photo_title', $metadata['image_meta']['title'] ); update_post_meta( $attachment_id, 'photo_camera', $metadata['image_meta']['camera'] ); return $metadata; } function camera_info_column_wpse_91177( $columns ) { $columns['cam_info'] = 'Camera Info'; return $columns; } function camera_info_display_wpse_91177( $column_name, $post_id ) { if( 'cam_info' != $column_name || !wp_attachment_is_image( $post_id ) ) return; $title = get_post_meta( $post_id, 'photo_title', true ); $camera = get_post_meta( $post_id, 'photo_camera', true ); $echo_title = $title ? 'Title: ' . $title . '
' : ''; $echo_camera = $camera ? 'Camera: ' . $camera : ''; echo $echo_title . $echo_camera; }

informação da câmera

Perguntas e respostas relacionadas um pouco: crie uma nova categoria após salvar com base em informações de publicação