wp_add_id3_tag_data()
云策文档标注
概述
wp_add_id3_tag_data() 函数用于解析音频或视频文件的 ID3 标签数据,包括 ID3v2、ID3v1 和 getID3 注释,提取元数据并处理图像信息。
关键要点
- 函数解析 ID3v2 和 ID3v1 标签的评论字段,提取键值对数据到元数据数组中,使用 wp_kses_post_deep() 或 wp_kses_post() 进行 HTML 清理。
- 处理 ID3v2 中的 APIC 帧或 getID3 注释中的图片数据,提取图像信息(如数据、MIME 类型、宽高)并添加到元数据中。
- 包含一个针对 'terms_of_use' 键的特定错误修复,自动修正字节流分析中的常见问题。
- 函数通过引用修改传入的 $metadata 数组,并优先处理 ID3v2 数据,如果找到则跳过 ID3v1。
代码示例
$metadata = array();
if ( ! class_exists( 'getID3' ) ) {
require( ABSPATH . WPINC . '/ID3/getid3.php' );
}
$id3 = new getID3();
$data = $id3->analyze( $file );
wp_add_id3_tag_data( $metadata, $data );
原文内容
Parses ID3v2, ID3v1, and getID3 comments to extract usable data.
Parameters
$metadataarrayrequired-
An existing array with data.
$dataarrayrequired-
Data supplied by ID3 tags.
Source
function wp_add_id3_tag_data( &$metadata, $data ) {
foreach ( array( 'id3v2', 'id3v1' ) as $version ) {
if ( ! empty( $data[ $version ]['comments'] ) ) {
foreach ( $data[ $version ]['comments'] as $key => $list ) {
if ( 'length' !== $key && ! empty( $list ) ) {
$metadata[ $key ] = is_array( $list ) ? wp_kses_post_deep( reset( $list ) ) : wp_kses_post( $list );
// Fix bug in byte stream analysis.
if ( 'terms_of_use' === $key && str_starts_with( $metadata[ $key ], 'yright notice.' ) ) {
$metadata[ $key ] = 'Cop' . $metadata[ $key ];
}
}
}
break;
}
}
if ( ! empty( $data['id3v2']['APIC'] ) ) {
$image = reset( $data['id3v2']['APIC'] );
if ( ! empty( $image['data'] ) ) {
$metadata['image'] = array(
'data' => $image['data'],
'mime' => $image['image_mime'],
'width' => $image['image_width'],
'height' => $image['image_height'],
);
}
} elseif ( ! empty( $data['comments']['picture'] ) ) {
$image = reset( $data['comments']['picture'] );
if ( ! empty( $image['data'] ) ) {
$metadata['image'] = array(
'data' => $image['data'],
'mime' => $image['image_mime'],
);
}
}
}
Changelog
| Version | Description |
|---|---|
| 3.6.0 | Introduced. |
Skip to note 2 content
Codex
Example
$metadata = array(); if ( ! class_exists( 'getID3' ) ) { require( ABSPATH . WPINC . '/ID3/getid3.php' ); } $id3 = new getID3(); $data = $id3->analyze( $file ); wp_add_id3_tag_data( $metadata, $data );