web-dev-qa-db-fra.com

Puis-je actualiser les vignettes par programme?

J'aimerais pouvoir actualiser le cache des vignettes par programme, sans savoir où l'accrocher, mais pour le moment, toute modification de la conception implique un nouveau chargement d'images.

5
Mild Fuzz

Vous voudrez peut-être regarder le plugin Regenerate Thumbnails by Viper007Bond .

En gros, voici comment procéder:

function regenerateThumbnails() {

    $images = $wpdb->get_results( "SELECT ID FROM $wpdb->posts WHERE post_type = 'attachment' AND post_mime_type LIKE 'image/%'" );

    foreach ( $images as $image ) {
        $id = $image->ID;
        $fullsizepath = get_attached_file( $id );

        if ( false === $fullsizepath || !file_exists($fullsizepath) )
            return;

        if ( wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $fullsizepath ) ) )
            return true;
        else
            return false;
    }
}

Remarque: cette fonction n'est pas très évolutive. Il parcourt toutes les images et régénère les vignettes une à une, ce qui peut consommer une grande quantité de mémoire. Alors, vous voudrez peut-être l’améliorer.

8
sorich87