WordPressで記事の一番最初の【画像】を取得する方法はよく見ますが、【動画】を取得する方法は見たことがなかったので。
まず、記事の一番最初の【画像】を取得する方法
functions.phpにコードを追加
function catch_that_image() {
global $post, $posts;
$first_img = '';
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
$first_img = $matches [1] [0];
if(empty($first_img)){ //Defines a default image
$first_img = "dummy.jpg";
}
return $first_img;
}
出力時の記述
<img src="<?php echo catch_that_image(); ?>" />
※width、heightなどのオプションは任意でどうぞ。
続いて、記事の一番最初の【動画】を取得する方法
functions.phpにコードを追加
function catch_post_movie() {
global $post;
$first_movie = '';
preg_match_all('/<iframe.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);
if (isset($matches[1])) {
$first_movie = $matches[1][0];
}
if(empty($first_movie)){
$first_movie = '';
}
return $first_movie;
}
出力時の記述
<iframe width="640" height="360" src="<?php echo catch_post_movie(); ?>" frameborder="0" allowfullscreen=""></iframe>
※ width、heightやiframeのオプションは任意の記述に変更してください。
なにも難しいことをしてないですね。
imgをiframeに替えただけです。
そのため、動画以外にiframeを使用していたら、それも取得してきてしまいます。もしyoutubeだけに絞りたい場合は、4行目の正規表現部分【[\'”]([^\'”]+)[\'”]】を修正してください。
(追記 2016/9/30)
YouTubeに限った場合のやり方も掲載して欲しい、とのことで。
せっかくなので、「記事の一番最初の【画像】を取得する方法」とは違う方法でやります。
functions.phpにコードを追加
function catch_post_movie() {
$youtubePost = esc_attr(get_the_content());
preg_match('/www.youtube.[-_\/A-Za-z0-9]*/', $youtubePost, $matches);
$youtubeURL = 'https://' . $matches[0] . '?rel=0';
if(isset($matches[0])){
echo $youtubeURL;
}
}
$youtubeURLで追加している「’?rel=0’」などのオプションは任意でどうぞ。
出力時の記述
<iframe width="640" height="360" src="<?php echo catch_post_movie(); ?>" frameborder="0" allowfullscreen=""></iframe>
※ width、heightやiframeのオプションは任意の記述に変更してください。
出力時の記述は一緒ですね。






最近のコメント