是否将相机信息保存为上传图像时的元数据?

时间:2013-03-16 作者:edeneye

我正在尝试让WordPress自动保存存储在我上传的图像中的“信用”元数据。我知道这将作为一个自定义后元字段输入,使用update_post_meta().

“信用”信息由以下人员收集:wp_read_image_metadata(), 但是media_handle_upload() 不使用它。它只使用从图像中收集的“标题”和“标题”信息post_contentpost_title 分别地

我发现了几个如何添加自定义附件元数据字段的示例after 在编辑图像时上传,但由于WP已经从图像的元数据中收集了这些信息,我想找到一种方法在上传图像时保存这些信息。

我不清楚该采取什么措施media_handle_upload() (好像没有钩子)所以我可以打电话update_post_meta 保存附件的“信用”行。

1 个回复
最合适的回答,由SO网友:brasofilo 整理而成

您可以使用wp_generate_attachment_metadata:

此函数用于生成图像附件的元数据。它还会根据Settings\\u Media\\u屏幕上定义的大小创建图像附件的缩略图和其他中间大小。

筛选器的第二个参数是附件ID,因此添加post meta应该不会有问题:

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;
}
检查内容$metadata[\'image_meta\'] 使用FireHP,结果如下:

aperture: 4
camera: "DMC-FZ100"
caption: ""
copyright: ""
created_timestamp: 1352136868
credit: ""
focal_length: "9.2"
iso: "100"
shutter_speed: "0.003125"
title: "Double Dip"
<小时>[Update]
在媒体库屏幕中添加自定义列的完整测试(/wp-admin/upload.php) 要显示帖子元信息,请执行以下操作:

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 . \'<br />\' : \'\';
    $echo_camera = $camera ? \'Camera: \' . $camera : \'\';
    echo $echo_title . $echo_camera;
}

camera info

相关问题;答:Create new category upon save based on post information

结束