WordPress Version: 5.3
/**
* Maybe attempts to generate attachment metadata, if missing.
*
* @since 3.9.0
*
* @param WP_Post $attachment Attachment object.
*/
function wp_maybe_generate_attachment_metadata($attachment)
{
if (empty($attachment) || empty($attachment->ID)) {
return;
}
$attachment_id = (int) $attachment->ID;
$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);
$_lock = 'wp_generating_att_' . $attachment_id;
if (!array_key_exists('_wp_attachment_metadata', $_meta) && !get_transient($_lock)) {
set_transient($_lock, $file);
wp_update_attachment_metadata($attachment_id, wp_generate_attachment_metadata($attachment_id, $file));
delete_transient($_lock);
}
}
}