我想在上传图像时自动将备选文本设置为与帖子标题相同。
附件的图像替代文本存储在post meta表中_wp_attachment_image_alt
元键。
在里面media_handle_upload()
和media_handle_sideload()
我们有:
$id = wp_insert_attachment($attachment, $file, $post_id);
if ( !is_wp_error($id) )
wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) );
The
wp_insert_attachment()
是的包装器
wp_insert_post()
以及
add_attachment
在附件写入posts表后激发。
Example
这里有一种方法可以在上传过程中通过
add_attachment
挂钩:
/**
* Set the attachment image alt as the parent post\'s title, during upload
*/
add_action( \'add_attachment\', function( $attachment_id )
{
// Nothing to do if it\'s not an image
if( ! wp_attachment_is_image( $attachment_id ) )
return;
// Get parent post\'s ID for the image
$parent_id = wp_get_post_parent_id( $attachment_id );
// Nothing to do if the image isn\'t attached to a post
if( ! $parent_id )
return;
// Get parent post\'s title
$parent_title = get_the_title( $parent_id );
// Nothing to do if the attached post has no title
if( empty( $parent_title ) )
return;
// Set the image alt as the parent post\'s title
update_post_meta( $attachment_id, \'_wp_attachment_image_alt\', $parent_title );
} );
Notes
请注意,我们不想添加
_wp_attachment_image_alt
所有附件的密钥,所以我们使用
wp_attachment_is_image()
仅以图像为目标。
我们还可以wp_update_attachment_metadata
或wp_generate_attachment_metadata
以类似的方式,附件的ID作为第二个过滤器输入参数传递。
这个wp_read_image_metadata()
在中调用wp_generate_attachment_metadata()
例如,检索EXIF和IPTC数据。这就是OP目前所关注的领域。
还请注意,当父帖子标题更改时,替代文本将不同步。在一个有点相关的问题中,我讨论了一些选项here.