wp_maybe_generate_attachment_metadata

The timeline below displays how wordpress function wp_maybe_generate_attachment_metadata has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

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);
        }
    }
}

WordPress Version: 4.2

/**
 * 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) || !$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_generating_att_' . $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);
        }
    }
}

WordPress Version: 3.9

/**
 * Maybe attempt 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) || !$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_generating_att_' . $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);
        }
    }
}