2020-01-23
投稿の最初の画像をサムネイルに・・・したらNotice: Undefined offset: 1
よく見るコードをコピペ→Notice: Undefined offset: 1
function catch_that_image() { global $post, $posts; $first_img = ''; ob_start(); ob_end_clean(); $output = preg_match_all('//i', $post->post_content, $matches); $first_img = $matches [1] [0]; if(empty($first_img)){ //画像がなかった場合 $first_img = "noimg.jpg"; } return $first_img; }
Notice: Undefined offset: 1は、配列が存在しない値だとでるらしい。
つまり、$first_imgの中身がない場合 = 記事内に画像がない場合、
$matches[1]がないのでこの警告になるのか?と思い、
$matches [1] [0]の前に、$outputに値があるかどうかで分岐することにした。
実際に使ったコードがこれ
function catch_that_image() { global $post, $posts; $first_img = ''; ob_start(); ob_end_clean(); $pattern = '/?src=(["\'])(.+?)\1.?>/i'; $output = preg_match_all($pattern, $post->post_content, $matches); if($output){ $first_img = $matches[0][0]; } if(empty($output)){ $first_img = '<img src="'.get_template_directory_uri().'/images/noimg.jpg" alt="" class="">'; } return $first_img; }
これで、表示がわに
<?php if(has_post_thumbnail()){ echo '<img src="' .the_post_thumbnail('blog').'" alt="" class="">'; }else{ $img = catch_that_image(); print_r($img); }; ?>
これで表示された。
関連記事
コメントを残す