YouTubeのサムネイルを投稿のアイキャッチにしたい

YouTubeのサムネイルを投稿のアイキャッチにしたい

WordPressのブロックエディタには「YouTube埋め込み」ブロックがあります。投稿や固定ページにYouTubeを貼り付けるのにとても便利ですので活用している方も多いのではないでしょうか?

ここでは投稿のアイキャッチにYouTubeのサムネイル画像を自動的に取得する方法を紹介します。

目次

function.phpに記述

function set_youtube_thumbnail_as_featured_image($post_id) {
    // ここで必須ファイルを読み込む
    require_once ABSPATH . 'wp-admin/includes/image.php';
    require_once ABSPATH . 'wp-admin/includes/file.php';
    require_once ABSPATH . 'wp-admin/includes/media.php';

    // リビジョンや自動保存は無視
    if ( wp_is_post_revision($post_id) || get_post_status($post_id) != 'publish' ) {
        return;
    }

    // 既にアイキャッチがある場合は処理しない
    if ( has_post_thumbnail($post_id) ) {
        return;
    }

    // 投稿の本文を取得
    $post = get_post($post_id);
    $content = $post->post_content;

    // YouTubeのURLを正規表現で抽出
    $pattern = '/https?:\/\/(?:www\.)?(?:youtube\.com\/watch\?v=|youtu\.be\/)([a-zA-Z0-9_-]+)/i';
    if ( preg_match($pattern, $content, $matches) ) {
        $video_id = $matches[1];

        // 高解像度→中解像度の順で取得を試みる
        $thumbnail_urls = array(
            "https://img.youtube.com/vi/{$video_id}/maxresdefault.jpg",
            "https://img.youtube.com/vi/{$video_id}/hqdefault.jpg",
        );

        foreach ($thumbnail_urls as $thumbnail_url) {
            // ファイルを一時保存
            $tmp = download_url($thumbnail_url);

            // 成功したら処理
            if ( !is_wp_error($tmp) ) {
                $file_array = array(
                    'name'     => $video_id . '.jpg',
                    'tmp_name' => $tmp,
                );

                // メディアとして登録
                $attachment_id = media_handle_sideload($file_array, $post_id, 'YouTubeサムネイル');

                // 正しく登録できたらアイキャッチに設定
                if ( !is_wp_error($attachment_id) ) {
                    set_post_thumbnail($post_id, $attachment_id);
                }

                // ファイルが取得できたらループを抜ける
                break;
            }
        }
    }
}
add_action('save_post', 'set_youtube_thumbnail_as_featured_image');

この記述を追加することでYoutubeの動画を埋め込んだらその動画のサムネイルがその投稿のアイキャッチとなります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

初めてホームページを作成したのは1996年。
2000年よりフリーランスで主に中小企業、学校、各種公的団体、個人事業主のWordPressを活用したホームページ制作を行っています。WordPressテーマはそれぞれのクライアントに合わせて作成しています。
WordPressを活用したサイト運営のための情報発信をしていきます。

目次