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