I have a function that is run in a WordPress plugin and when wp_debug is activated I receive this error message.
“Undefined offset: 0 in /â¦/wp-content/plugins/advanced-widget-pack/lib/advanced_widget_pack.class.php on line 568“
Here is the function that is used in the plugin:
/**
* Retrieves the image for a post
*
* Uses the post_thumbnails if available or
* searches through the post and retrieves the first found image for use as thumbnails
*/
function featured_image_thumb($size = 50) {
global $post;
// If a featured image has been set, use the featured-thumbnail size that was set above with the class of 'thumb'
if(has_post_thumbnail() ) {
echo '<a href="'.get_permalink().'" title="'.get_the_title().'" >';
the_post_thumbnail(array($size,$size),array('class' => 'thumb'));
echo '</a>';
}
// If a featured image is not set, get the first image in the post content
else {
$first_img = '';
ob_start();
ob_end_clean();
$output = preg_match_all('/<img.+src=['"]([^'"]+)['"].*>/i', $post->post_content, $matches);
$first_img = $matches[1][0];
// Define a default fallback image in case a featured image is not set and there are no images in the post content
if(empty($first_img)){
$first_img = WP_PLUGIN_URL.'/advanced-widget-pack/images/nothumb.png';
}
// Generate the HTML code to display the image and resize the image with timthumb.php
return '<a title="'.get_the_title().'" href="'.get_permalink().'"><img class="thumb" src="'.WP_PLUGIN_URL.'/advanced-widget-pack/timthumb.php?src=' . $first_img .'&w='.$size.'&h='.$size.'" alt="" /></a>';
}
}
Line 568 or the place that the error is occurring is this section of the code:
$first_img = $matches[1][0];
I am not sure how to prevent or fix this error.
Any help or advise would be greatly appreciated.
Thanks
Undefined offset $X[Y] means that the array X does not have a key Y. In your case $matches[1] does not have a first element.
I think you have to use a conditional :
In my case an embracing with a conditional did it for me:
All the Notices are gone! 🙂
Means that that first index of the array is not defined prob because the preg_match above it failed to find anything. You shouldnt have to worry about it really but putting the following after ob_end_clean should take care of it