WordPress

WordPress add_image_size Boyutlarını Eski Resimlere Uygulama

Yüklenecek resimler için add_image_size ile belirlediğimiz özel boyutları daha önceki yazılarda yüklenen resimlere de uygulamak için aşağıdaki fonksiyonu kullanabilirsiniz. Dikkat etmeniz gereken konu ise çok fazla yazınız varsa post_per_page kısmını $chunk_size ile limitlendirmektir.

function regenerate_thumbnails_chunk($chunk_size = 20) {
    require_once( ABSPATH . 'wp-admin/includes/image.php' );
    $args = array(
        'post_type'      => 'attachment',
        'post_mime_type' => 'image',
        'post_status'    => 'inherit',
        'posts_per_page' => $chunk_size,
        'paged'          => isset($_GET['page']) ? intval($_GET['page']) : 1,
    );

    $query_images = new WP_Query($args);
    $count = 0;

    if ($query_images->have_posts()) {
        while ($query_images->have_posts()) : $query_images->the_post();
            $id = get_the_ID();
            $fullsizepath = get_attached_file($id);
            
            if (false === $fullsizepath || !file_exists($fullsizepath)) 
                continue;

            $metadata = wp_generate_attachment_metadata($id, $fullsizepath);
            if (is_wp_error($metadata)) {
                echo "Error processing image $id: " . $metadata->get_error_message() . "<br>";
            } else {
                wp_update_attachment_metadata($id, $metadata);
                $count++;
                echo "Processed image $id...<br>";
                flush();
            }
        endwhile;
    }

    wp_reset_postdata();

    echo "Processed $count images in this chunk.<br>";
    
    if ($query_images->max_num_pages > $args['paged']) {
        $next_page = $args['paged'] + 1;
        echo "<a href='" . admin_url('tools.php?page=regen-thumbs&page=' . $next_page) . "'>Next Page</a>";
    } else {
        echo "Finished processing all images.";
    }
}

Yukarıdaki regenerate_thumbnails_chunk(); fonksiyonunu index.php ya da istediğiniz bir sayfaya ekleyerek çağırabilirsiniz.

Umarım işinize yarar. Görüşürüz.

Bir Yanıt Bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir