I am trying to get some metadata from an mp3 file in WordPress. Specifically the length variable. Here is a bit of my code. It's not shown here but I have included the wp-admin/includes/media.php file. When I look at my page http://beta.openskyministry.org/podcasts/ I just see empty tags for <itunes:length></itunes:length>
Let me know If you need anything else to help answer my question.
$aud_meta = wp_read_audio_metadata($aud_url); ?>
<item>
<title><?php the_title(); ?></title>
<itunes:author><?php echo htmlspecialchars((get_bloginfo('name'))); ?></itunes:author>
<itunes:summary><?php echo htmlspecialchars(strip_tags(get_the_excerpt())); ?></itunes:summary>
<itunes:length><?php echo $aud_meta['length_formatted']; ?></itunes:length>
WordPress already stores media metadata, so there's no need to go over it. Solution is as simple as:
add_action( 'wp_head', function(){
global $post;
if ( is_single($post) ) {
$args = array(
'post_type' => 'attachment',
'numberposts' => 1,
'post_parent' => $post->ID,
'post_mime_type' => 'audio'
);
$attachments = get_posts( $args );
if($attachments){
$meta = wp_get_attachment_metadata( $attachments[0]->ID );
echo "<itunes:length>{$meta['length_formatted']}</itunes:length>";
}
}
});
For the records, wp_read_audio_metadata()
expects the file path, not the URL. If needed, it should be:
$path = get_attached_file( $attachment->ID );
$meta = wp_read_audio_metadata($path);
echo "<itunes:length>{$meta['length_formatted']}</itunes:length>";
Related: Save camera info as metadata on image upload?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With