将附件图像EXIF数据检索为“插件”对以后的访问者没有帮助,让我们从如何检索开始:
# Get the post ID: Use one of the following. Preferred is the API function get_the_ID()
# $GLOBALS[\'post\']->ID;
# global $post; $post->ID;
# get_the_ID();
$meta = wp_get_attachment_metadata( get_the_ID(), false );
# Fetch the EXIF data part
$exif = $meta[\'image_meta\'];
现在,我们将EXIF数据保存到
$exif
- 为了确保我们没有被图像入侵,在显示(或更好的做法是保存)数据之前,不要忘记对数据进行转义/清理。
# List of EXIF data entries:
$created = date_i18n(
get_option( \'date_format\' ),
strtotime( $meta[\'created_timestamp\'] )
);
$copyright = filter_var( $meta[\'copyright\'] );
$credit = filter_var( $meta[\'credit\'] );
$title = filter_var( $meta[\'title\'] );
$camera = filter_var( $meta[\'camera\'] );
$shutter = number_format_i18n( filter_var(
$meta[\'shutter_speed\'],
FILTER_SANITIZE_NUMBER_FLOAT
), 2 );
$iso = number_format_i18n( filter_var(
$meta[\'iso\'],
FILTER_SANITIZE_NUMBER_FLOAT
) );
$focal = number_format_i18n( filter_var(
$meta[\'focal_length\'],
FILTER_SANITIZE_NUMBER_FLOAT
), 2 );
$aperture = filter_var( $meta[\'aperture\'] );
将image EXIF meta另存为term这可能(或几乎在所有情况下)会发生在admin中,我们需要使用其中的挂钩:
add_attachment
(参数:$att_id
)edit_attachment
(参数:$att_id
)
在上传或编辑图像后,两者都会触发。
然后就有了
media_send_to_editor
(参数:$html, $send_id, $attachment
)attachment_fields_to_save
(参数:$post, $attachment
)
(更多信息请参见
this answer)
所以唯一要做的就是
为您的案例选择正确的挂钩提取要添加为术语的EXIF数据wp_set_object_terms()
到所需的分类法,并在附加到上面选择的过滤器或挂钩的回调中发布:
$terms = wp_set_object_terms(
get_the_ID(),
array( $meta[\'copyright\'] ),
\'your-taxonomy\',
# Do *append* the new term and not replace all others with it!
TRUE
);
# DEBUG:
if ( is_wp_error( $terms ) )
exit( $terms->get_error_message() );
var_dump( $terms ); // should be an array of terms
您应该始终检查返回值(就像我对
is_wp_error()
) 在处理某些东西时。如果你想表现得好一点,并且这是由于缺少EXIF数据而可能发生错误的地方,那么你也应该跳到那里,并提供一些用户反馈,例如管理员通知。