Support » Plugin: PDF Thumbnails » Regenerate Thumbnails

  • Resolved provdes

    (@provdes)


    I’m planning on importing lots of PDFs by csv to my website, and without testing it, I have a feeling that the thumbnails wont be created for the PDFs as the links between posts and attachments will be created when importing, but the PDFs will have been uploaded separately by FTP.

    Is there a way to regenerate thumbnails for PDFs already uploaded?

    Will the regenerate thumbnails plugin work alongside yours?

    https://wordpress.org/plugins/pdf-thumbnails/

Viewing 4 replies - 1 through 4 (of 4 total)
  • Plugin Author stianlik

    (@stianlik)

    You are correct, thumbnails is generated by hooking into the wp_generate_attachment_metadata hook, which triggers when you upload a new file.

    Unfortunately, the regenerate thumbnails plugin only loops through images, so it will not trigger thumbnail generation for PDFs. It would be useful to support the regenerate thumbnails plugin. I will check with the author to see if we can figure something out. However, I reckon that will take some time.

    For now, you can do it manually with the following code snippet:

    add_action('admin_init', function () {
    
        if (!isset($_GET['regenerate_pdf_thumbnails'])) {
            return;
        }
    
        $chunk_size = empty($_GET['regenerate_pdf_thumbnails_chunk_size']) ? -1
            : $_GET['regenerate_pdf_thumbnails_chunk_size'];
    
        // Get all attachments
        $posts = get_posts(array(
            'post_type' => 'attachment',
            'post_status' => 'any',
            'posts_per_page' => $chunk_size,
            'fields' => 'ids',
            'paged' => (int) $_GET['regenerate_pdf_thumbnails'],
            'meta_key' => 'PdfThumbnailsPlugin',
            'meta_compare' => 'NOT EXISTS'
        ));
    
        // Regenerate metadata (incl. thumbnails and pdf thumnails)
        foreach ($posts as $id) {
            $file = get_attached_file($id);
            $meta = wp_generate_attachment_metadata($id, $file);
            update_post_meta($id, $meta);
        }
    });

    With that you can use http://YOURSITE?regenerate_pdf_thumbnails to trigger the generation. To avoid PHP running for too long, and cancelling the operation, you can use:

    Regenerate attachments 1-5:
    http://YOURSITE/wp-admin/upload.php?regenerate_pdf_thumbnails=1&regenerate_pdf_thumbnails_chunk_size=5

    Regenerate attachments 6-10:
    http://YOURSITE/wp-admin/upload.php?regenerate_pdf_thumbnails=1&regenerate_pdf_thumbnails_chunk_size=5

    And so on.

    Thanks very much! The snippet will be very useful. I look forward to trying it out.

    I had another query on theme implementation for this plugin in another thread. If you have 5mins to look at it that would be great!

    https://wordpress.org/support/topic/how-to-implement-in-theme?replies=3#post-6243035

    Plugin Author stianlik

    (@stianlik)

    Good look with your imports, marking this as resolved 🙂

    ### IMPORTANT ###

    Instead of using update_post_meta() inside the foreach, you NEED TO use wp_update_attachment_metadata()! …the params stay the same.

    …guess this is just a typo by stianlik, as update_post_meta needs 3 params anyway 😉

Viewing 4 replies - 1 through 4 (of 4 total)
  • The topic ‘Regenerate Thumbnails’ is closed to new replies.