WordPressで投稿の最初の画像を抽出
アイキャッチ画像の指定もめんどくさい場合

アイキャッチ画像を使えば記事のサムネイルを簡単に指定できるけれど、それすらめんどくさいと思い出した。
ということで、記事中に画像を使っていれば自動的にその画像が、アイキャッチ画像が指定されていればアイキャッチ画像がサムネイルになるように、function.phpに手を入れてみた。

imgタグを抽出する正規表現はかなり簡素なものにしているので、利用状況によってはうまく抽出できないかもしれない。その時はもっと正しい正規表現を使えば大丈夫だと思う。

<?php
function catch_image($type = '') {
global $post, $posts;
$img = get_the_post_thumbnail($post->ID);
if (!$img) {
preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
if ($type === 'src') {
$img = $matches[1][0];
} else {
$img = $matches[0][0];
}
} else {
if ($type === 'src') {
$img = get_the_post_thumbnail_url($post->ID);
}
}
return $img;
}
?>
view raw catch_image.php hosted with ❤ by GitHub

使いたい場所で「catch_image()」とすれば、アイキャッチ画像か最初の画像を抽出する。
catch_image('src')」とすれば画像のURLを返すようにしてみたが、今のところ使い道はない。

Update:

Text by pushman

  • Instagram
  • YouTube
  • ANGLERS