【WordPress】アイキャッチ画像を設定しないでもサムネイルを表示する方法

最終更新日: 公開日: 2021年06月

WordPress でいちいちアイキャッチ画像を設定するのは面倒くさいと思ったことはないだろうか.
ただ,テーマによっては様々な場所でアイキャッチ画像がサムネイルとして使われている.
この画像があるのとないのとでは見栄えがかなり違ってくる.

マーケティングカテゴリ
この左にあるアイコンのような画像がアイキャッチ画像

アイキャッチ画像の設定

WordPress で記事を作成すると「アイキャッチ画像」という項目がある.
画像をアップするだけでも面倒だが,アップさえしてしまえば,選択するだけなので簡単に設定できる.
しかし,アイキャッチ画像が設定されていない昔の記事まで遡ってイチイチ登録するのは少々面倒である.

また,どこかの画像をそのままリンクしている場合,自社サーバーに画像はない.
(あまり,そのような直リンクはしないほうがいいだろうが.)
そのような場合,アイキャッチ画像としては登録できない.

投稿記事の一番最初に出てくる画像が基本的にアイキャッチ画像

よく考えると投稿記事の最初に出てくるものがアイキャッチ画像になることが多いはず.

ということは貼り付けるだけで作業しているのに二度手間になる.

そのようなことはコンピュータに自動でやらせればよい.

自動的にアイキャッチ画像を表示されるようにする

ということでアイキャッチ画像を設定していなくても最初の画像が自動的にアイキャッチ画像になれば登録の手間は省けるし,外部サーバーの画像だとしても表示することが出来る.

自動アイキャッチ画像設定の実装方法

プラグインは使わない

なるべくなら,プラグインは使いたくない.

素性の知れないプラグインを使うのはなるべく避けたいし,更新がある際に更新するのも面倒だし,サーバーを移動することになった時にプラグインを入れ直して設定するのも面倒.

そこで,functions.php に追加することにする.

アイキャッチ画像が生成されるときに使用できるフィルターフックは
post_thumbnail_html
なので,これにフィルターをあてることにより実現する.

functions.php に追加するコード

外観→テーマエディタ
で functions.php を選択して,以下のコードを挿入する.

// サムネイルがない場合に最初の画像を持ってくる.
function my_post_thumbnail($html, $post_id, $post_image_id){
  $post = get_post( $post_id );
  if (empty($post_image_id)) {
    $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
    $first_img = $matches[1][0];
    $html = '<img src="' . $first_img . '" />';
  }
  return $html;
}
add_filter('post_thumbnail_html','my_post_thumbnail',10,3);

関連ページ

 

Contact

ご質問等ありましたら,下のフォームからお願いします.

 
   
contact
Pagetop