WordPress 投稿記事の最初の画像のサムネイルを取得する

Filed under: functions.php,wordpress — kdcs @ 17年12月12日 火曜日

※以前の記述では記事投稿時にアップロードした1番目の画像が取得されるため、
その画像を記事内で使用しなくても「最初の画像」と認識されてしまう。

こちらは記事内に張り付けてある最初の画像を取得する方法

function.phpに以下を記述

//投稿記事の最初の画像のサムネイル -------------------------------------------------------
function my_first_image_thumb(){
  global $post;
  $img_url = '';
  //デフォルト画像の設定
  $defaute_url = get_stylesheet_directory_uri(). '/images/default.png';

  //最初の画像を取得してIDを取得
  preg_match_all('/<img.+?class=".+?wp-image-(.+).*?".*?>/i', $post->post_content, $matches);
  if(isset($matches[1][0])){
    $img_id = ($matches[1][0]);
  }

  //最初の画像があれば分岐
  if(!empty($img_id)){
    //最初の画像IDからサムネイルのパスを取得してセット
    $img_url = my_wp_get_attachment_medium_url($img_id);
  } else {
    //最初の画像がない場合、デフォルト画像のパスをセット
    $img_url = $defaute_url;
  }
  return $img_url;
}

//画像IDからサムネイルサイズのパスを取得
function my_wp_get_attachment_medium_url( $id ) {
  $thumbnail_array = image_downsize( $id, 'thumbnail' );
  $thumbnail_path = $thumbnail_array[0];
  return $thumbnail_path;
}

テンプレート内に以下を記述
※リストタグで最新の記事を5件表示させる例

<ul class="sp_list">
<?php $paged = get_query_var('paged'); ?>
<?php query_posts("posts_per_page=5&paged=$paged"); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<li class="clearfix"><a href="<?php the_permalink() ?>"><span class="listImg"><img src="<?php echo my_first_image_thumb(); ?>"></span><span class="listTitle"><?php the_title(); ?></span></a></li>
<?php endwhile; else: //記事が無い場合 ?>
<li><< イベント準備中です >></li>
<?php endif; wp_reset_query(); //クエリのリセット ?>
</ul>

サイト内検索

カテゴリー

最近の投稿

« |WordPress 投稿記事の最初の画像のサムネイルを取得する| »
↑上に戻る