我有一个在WordPress插件中运行的函数,当wp_debug被激活时,我收到此错误消息。
“未定义的偏移量:在第568行的/.../wp-content/plugins/advanced-widget-pack/lib/advanced_widget_pack.class.php中<0 ”
以下是插件中使用的函数:
/**
* 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>';
}
}
第568行或发生错误的地方是代码的这一部分:
$first_img = $matches[1][0];
我不确定如何预防或修复此错误。
非常感谢任何帮助或建议。 感谢
答案 0 :(得分:2)
未定义的偏移量$ X [Y]表示数组X没有键Y.在您的情况下,$ matches [1]没有第一个元素。
我认为你必须使用条件:
if(preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches)){
$first_img = $matches[1][0];
}
答案 1 :(得分:1)
在我的案例中,有条件的拥抱为我做了:
if( $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches); )
所有通知都消失了! :)
答案 2 :(得分:0)
意味着数组的第一个索引未定义,因为它上面的preg_match无法找到任何内容。你不应该真的担心它,但在ob_end_clean之后放下以下应该照顾它
$matches[1][0] = '';