Youtubeのリンクをカスタムフィールドで張り付けるとき
カスタムフィールドでURLフィールドを作った後の話をします。
URLだけで埋め込み
wp_oembed_get関数ならURLだけで埋め込みできる
https://lib.ridesign.jp/lib_wp/youtube/
これを使うとiframeタグで出力してくれる
<?php // ACFの場合
$変数 = get_field('フィールド名');
if($変数){
echo $変数 = wp_oembed_get($変数);
}
?>Youtubeのサムネイルを取得する
YOUTUBE動画のサムネイルは、URLを指定するだけで取得することができます。
取得したい動画IDさえわかれば、様々なサイズのサムネイルが取得可能です。
https://takayakondo.com/youtube-thumbnail-acquisition/
動画IDさえ取得できればサムネイルも取得できる
じゃあ動画IDはどう取得するか↓
【PHP】YouTubeのいろいろなURLから動画のIDを取り出す正規表現
https://cravelweb.com/webdesign/wp-customize/post-3811
<?php
preg_match('/(http(s|):|)\/\/(www\.|)yout(.*?)\/(embed\/|watch.*?v=|)([a-z_A-Z0-9\-]{11})/i', $URLが入った変数, $results);
echo $results[6]; // var_dumpでもOK.色々出てくるけど… ここで出さなくても良き確認用なり.
?>これで取得できたはずなので、出力したい場所にimgタグで埋め込む
<?php /* 小さいサムネイル w120 x h90 */ ?>
<img src="https://img.youtube.com/vi/<?php echo $results[6] ?>/default.jpg" />
<?php /* 中くらいサムネイル w320 x h180 */ ?>
<img src="https://img.youtube.com/vi/<?php echo $results[6] ?>/mqdefault.jpg" />
<?php /* 大きいサムネイル w480 x h360 */ ?>
<img src="https://img.youtube.com/vi/<?php echo $results[6] ?>/hqdefault.jpg" />
<?php /* 特大サムネイル w640 x h480 */ ?>
<img src="https://img.youtube.com/vi/<?php echo $results[6] ?>/sddefault.jpg" />
<?php /* 超特大サムネイル w1280 x h720 */ ?>
<img src="https://img.youtube.com/vi/<?php echo $results[6] ?>/maxresdefault.jpg" />YouTube 関連動画の設定
現在(2021/12/13時点)で関連動画を非表示にする設定がないので、同一のチャンネルの関連動画を表示するようにする。
<iframe width="" height="" src="https://www.youtube.com/embed/<?php echo esc_html($動画ID); ?>?rel=0" ~></iframe>
