WP-Debug Issue with Image Resizing Script (WordPress)
Working with Victor Teixeira's image resizing script, and have used it 开发者_开发百科on several premium themes. It functions great, but I'm getting some notices when I run the debugger, and I don't know how to resolve it. I wonder if anyone can help? :)
Here are the notices:
Notice: Undefined variable: file_path in /nfs/c03/h01/mnt/51370/domains/minimalpixels.com/html/wp-content/themes/paragon/framework/functions/basicFunctions.php on line 129
Notice: Undefined index: extension in /nfs/c03/h01/mnt/51370/domains/minimalpixels.com/html/wp-content/themes/paragon/framework/functions/basicFunctions.php on line 130
Notice: Undefined index: dirname in /nfs/c03/h01/mnt/51370/domains/minimalpixels.com/html/wp-content/themes/paragon/framework/functions/basicFunctions.php on line 133
Notice: Undefined variable: image_src in /nfs/c03/h01/mnt/51370/domains/minimalpixels.com/html/wp-content/themes/paragon/framework/functions/basicFunctions.php on line 139
Notice: Undefined variable: image_src in /nfs/c03/h01/mnt/51370/domains/minimalpixels.com/html/wp-content/themes/paragon/framework/functions/basicFunctions.php on line 139
Notice: Undefined variable: image_src in /nfs/c03/h01/mnt/51370/domains/minimalpixels.com/html/wp-content/themes/paragon/framework/functions/basicFunctions.php on line 194
Notice: Undefined variable: image_src in /nfs/c03/h01/mnt/51370/domains/minimalpixels.com/html/wp-content/themes/paragon/framework/functions/basicFunctions.php on line 195
Notice: Undefined variable: image_src in /nfs/c03/h01/mnt/51370/domains/minimalpixels.com/html/wp-content/themes/paragon/framework/functions/basicFunctions.php on line 196
And here is the code:
function vt_resize( $attach_id = null, $img_url = null, $width, $height, $crop = false ) {
// this is an attachment, so we have the ID
if ( $attach_id ) {
$image_src = wp_get_attachment_image_src( $attach_id, 'full' );
$file_path = get_attached_file( $attach_id );
// this is not an attachment, let's use the image url
} else if ( $img_url ) {
$file_path = parse_url( $img_url );
$file_path = $_SERVER['DOCUMENT_ROOT'] . $file_path['path'];
//$file_path = ltrim( $file_path['path'], '/' );
//$file_path = rtrim( ABSPATH, '/' ).$file_path['path'];
$orig_size = getimagesize( $file_path );
$image_src[0] = $img_url;
$image_src[1] = $orig_size[0];
$image_src[2] = $orig_size[1];
}
[129] $file_info = pathinfo( $file_path );
[130] $extension = '.'. $file_info['extension'];
// the image path without the extension
[133]$no_ext_path = $file_info['dirname'].'/'.$file_info['filename'];
$cropped_img_path = $no_ext_path.'-'.$width.'x'.$height.$extension;
// checking if the file size is larger than the target size
// if it is smaller or the same size, stop right here and return
[139]if ( $image_src[1] > $width || $image_src[2] > $height ) {
// the file is larger, check if the resized version already exists (for $crop = true but will also work for $crop = false if the sizes match)
if ( file_exists( $cropped_img_path ) ) {
$cropped_img_url = str_replace( basename( $image_src[0] ), basename( $cropped_img_path ), $image_src[0] );
$vt_image = array (
'url' => $cropped_img_url,
'width' => $width,
'height' => $height
);
return $vt_image;
}
// $crop = false
if ( $crop == false ) {
// calculate the size proportionaly
$proportional_size = wp_constrain_dimensions( $image_src[1], $image_src[2], $width, $height );
$resized_img_path = $no_ext_path.'-'.$proportional_size[0].'x'.$proportional_size[1].$extension;
// checking if the file already exists
if ( file_exists( $resized_img_path ) ) {
$resized_img_url = str_replace( basename( $image_src[0] ), basename( $resized_img_path ), $image_src[0] );
$vt_image = array (
'url' => $resized_img_url,
'width' => $proportional_size[0],
'height' => $proportional_size[1]
);
return $vt_image;
}
}
// no cache files - let's finally resize it
$new_img_path = image_resize( $file_path, $width, $height, $crop );
$new_img_size = getimagesize( $new_img_path );
$new_img = str_replace( basename( $image_src[0] ), basename( $new_img_path ), $image_src[0] );
// resized output
$vt_image = array (
[194]'url' => $new_img,
[195]'width' => $new_img_size[0],
[196]'height' => $new_img_size[1]
);
return $vt_image;
}
// default output - without resizing
$vt_image = array (
'url' => $image_src[0],
'width' => $image_src[1],
'height' => $image_src[2]
);
return $vt_image;
}
Thanks you in advance. This issue is causing me a headache :)
Without the line numbers is a bit tricky to know where exactly the errors are being encountered, but here is my guess. The first error, and probably the one that triggers the rest is:
Notice: Undefined variable: file_path in /nfs/c03/h01/mnt/51370/domains/minimalpixels.com/html/wp-content/themes/paragon/framework/functions/basicFunctions.php on line 129
And it is probably triggered in this line:
$file_info = pathinfo( $file_path );
The function doesn't seem to me to be very well designed. The first two arguments, $attach_id
and $image_url
are optional (both could be omitted), judging from their default NULL values and the checks in the code. But the code is defining the $file_path
var by checking the presence of either $attach_id
or $image_url
(if
and elseif
). So, if none of these is present $file_path
will not be defined, and hence the error notice.
If the function can't do its job without one of these parameters ($image_url
or $attach_id
), it should return after the elseif:
if($attach_id) { /* code */ }
elseif($image_url) { /* code */ }
else return False;
精彩评论