サイドバーなどのサムネイル画像として、記事内の最初の画像を取り出す場合。
サムネイル画像が登録されていない場合は、記事内の画像をサムネイルとして利用する。
// 投稿データを取得 $args = array( 'post_type' => '投稿タイプ名', 'posts_per_page' => 5, 'post_status' => publish, ); $post_array = get_posts($args); if ($post_array) { // 投稿データ分繰り返す foreach ($post_array as $post_data) { $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post_item->post_content, $matches); $first_img = $matches[1][0]; } }
$outputには、画像があるかないかの判断を0と1で判断。ひとつでもあると1が入る。
$matches[1]にはsrc属性のimgパスが多次元配列で入っている。
// 以下をfunction.phpに追記 // returnは画像パスが入る function catch_that_image() { global $post, $posts; $first_img = ''; ob_start(); ob_end_clean(); $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches); $first_img = $matches [1] [0]; if(has_post_thumbnail()) { $image_id = get_post_thumbnail_id (); $image_url = wp_get_attachment_image_src ($image_id, true); $first_img = $image_url[0]; } elseif(empty($first_img)){ $first_img = get_bloginfo("template_url")."/img/no_image.png"; } return $first_img; }
// 以下のようにbackground画像として利用する場合 <div class="thumb"<?php if(catch_that_image()): ?> style="background: url(<?php echo catch_that_image() ?>) no-repeat scroll center center / cover transparent;"<?php endif; ?>></div>