mirror of
https://github.com/WordPress/WordPress.git
synced 2025-02-16 11:35:48 +00:00
Introduce maybe_regenerate_attachment_metadata( $attachment )
. On the Edit Media screen, call it for Audio and Video files.
The functions checks if the item is lacking metadata altogether. If a video or audio file was uploaded prior to 3.6, it does not have any metadata. This tries to fix it. Implements locking via a transient to protect against this running in parallel with another request. This is the minimum viable product for #26825, but leaving the ticket open unless this function needs to be called in other places. See #26825. Built from https://develop.svn.wordpress.org/trunk@27127 git-svn-id: http://core.svn.wordpress.org/trunk@26994 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
f1fff8a2e9
commit
03dda3b273
@ -2636,10 +2636,14 @@ function edit_form_image_editor( $post ) {
|
|||||||
<?php
|
<?php
|
||||||
elseif ( $attachment_id && 0 === strpos( $post->post_mime_type, 'audio/' ) ):
|
elseif ( $attachment_id && 0 === strpos( $post->post_mime_type, 'audio/' ) ):
|
||||||
|
|
||||||
|
maybe_regenerate_attachment_metadata( $post );
|
||||||
|
|
||||||
echo wp_audio_shortcode( array( 'src' => $att_url ) );
|
echo wp_audio_shortcode( array( 'src' => $att_url ) );
|
||||||
|
|
||||||
elseif ( $attachment_id && 0 === strpos( $post->post_mime_type, 'video/' ) ):
|
elseif ( $attachment_id && 0 === strpos( $post->post_mime_type, 'video/' ) ):
|
||||||
|
|
||||||
|
maybe_regenerate_attachment_metadata( $post );
|
||||||
|
|
||||||
$meta = wp_get_attachment_metadata( $attachment_id );
|
$meta = wp_get_attachment_metadata( $attachment_id );
|
||||||
$w = ! empty( $meta['width'] ) ? min( $meta['width'], 600 ) : 0;
|
$w = ! empty( $meta['width'] ) ? min( $meta['width'], 600 ) : 0;
|
||||||
$h = 0;
|
$h = 0;
|
||||||
|
@ -2194,3 +2194,26 @@ function get_post_gallery_images( $post = 0 ) {
|
|||||||
$gallery = get_post_gallery( $post, false );
|
$gallery = get_post_gallery( $post, false );
|
||||||
return empty( $gallery['src'] ) ? array() : $gallery['src'];
|
return empty( $gallery['src'] ) ? array() : $gallery['src'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If an attachment is missing its metadata, try to regenerate it
|
||||||
|
*
|
||||||
|
* @param post $attachment Post object.
|
||||||
|
*/
|
||||||
|
function maybe_regenerate_attachment_metadata( $attachment ) {
|
||||||
|
if ( empty( $attachment ) || ( empty( $attachment->ID ) || ! $attachment_id = (int) $attachment->ID ) ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$file = get_attached_file( $attachment_id );
|
||||||
|
$meta = wp_get_attachment_metadata( $attachment_id );
|
||||||
|
if ( empty( $meta ) && file_exists( $file ) ) {
|
||||||
|
$_meta = get_post_meta( $attachment_id );
|
||||||
|
$regeneration_lock = 'wp_regenerating_' . $attachment_id;
|
||||||
|
if ( ! array_key_exists( '_wp_attachment_metadata', $_meta ) && ! get_transient( $regeneration_lock ) ) {
|
||||||
|
set_transient( $regeneration_lock, $file );
|
||||||
|
wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $file ) );
|
||||||
|
delete_transient( $regeneration_lock );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user