1
votes

I want to add a auto-check thumbnail size function to my WordPress website, if the thumbnail size is less than 770px * 400px, it will not displayed on the top of the articles.

so I replace the original code:

<?php if( has_post_thumbnail() && ! has_post_format(‘video’) && ! has_post_format(‘audio’) && ! has_post_format(‘gallery’) ) : ?>

with

<?php
$display_thumbnail = true;
$thumbnail_size = getimagesize( wp_get_attachment_url( get_post_thumbnail_id() ) );
if ($thumbnail_size[0] < 770 || $thumbnail_size[0] < 400) {
$display_thumbnail = false;
}
?>
<?php if( has_post_thumbnail() && ! has_post_format('video') && ! has_post_format('audio') && ! has_post_format('gallery') && $display_thumbnail ) : ?>

Then the error occur: under the original code, if I didn't upload an image, it will display nothing; but under the new code, if I didn't upload an image, it will show the warning

Warning: getimagesize() [function.getimagesize]: Filename cannot be empty on...

Can someone tell me how to fix this issue?

1
I assume you meet $thumbnail_size[1] < 400 - Antony Gibbs
better use wp_get_attachment_image_src... - Antony Gibbs
I've just rewritten it with wp_get_attachment_image_src() Tell me if it works now - Antony Gibbs

1 Answers

1
votes

try

<?php
if(has_post_thumbnail()) {
    $attachment_src = wp_get_attachment_image_src( get_post_thumbnail_id(), 'full' );
    $display_thumbnail = is_array($attachment_src)
                        && $attachment_src[1] >= 770
                        && $attachment_src[2] >= 400;
}
?>
<?php if( has_post_thumbnail() && ! has_post_format('video') && ! has_post_format('audio') && ! has_post_format('gallery') && $display_thumbnail ) : ?>

Edited: added 'full' argument to get the full size uploaded image.