2026年5月20日

2026年5月20日

WordPressの埋め込み(oEmbed)が機能しない場合の解決方法

はじめに

WordPressの投稿エディタにYouTubeやTwitterのURLをそのまま貼り付けると、自動的に埋め込みプレビューに変換される「oEmbed」機能があります。この機能が動作しない場合、複数の原因が考えられます。

症状・原因

  • URLがリンクのままで埋め込みに変換されない
  • 埋め込みが表示されるが画面が真っ白になる
  • 「このコンテンツは埋め込めません」と表示される

主な原因:

1. CSP(Content Security Policy)のframe-srcが未設定

2. oEmbedエンドポイントへのリクエストがタイムアウト

3. フィルターでoEmbedが無効化されている

4. X(旧Twitter)の埋め込みAPIの仕様変更

解決手順

ステップ1:oEmbedが有効か確認

// functions.php に誤ってこの記述がないか確認
// これがあるとoEmbedが無効になる
remove_filter('the_content', [WP_Embed, 'autoembed'], 8);
// ↑ この行がある場合は削除する

ステップ2:CSPのframe-srcを設定

// functions.php
add_action('send_headers', function() {
    $csp = implode('; ', [
        "default-src 'self'",
        "frame-src 'self' https://www.youtube.com https://player.vimeo.com"
            . " https://twitter.com https://www.instagram.com",
        "script-src 'self' 'unsafe-inline' https://platform.twitter.com",
    ]);
    header("Content-Security-Policy: $csp");
});

ステップ3:特定サービスのoEmbed URLを手動登録

// プロバイダーを手動登録(X/旧Twitterなど仕様変更があったサービス向け)
add_filter('oembed_providers', function($providers) {
    // Xの新エンドポイントに更新
    $providers['#https?://twitter\.com/.*#i'] = [
        'https://publish.twitter.com/oembed',
        true,
    ];
    return $providers;
});

ステップ4:oEmbedキャッシュをクリア

oEmbedの結果はデータベースの post_meta にキャッシュされます。古いキャッシュが残っていると更新されません。

# oEmbedキャッシュを一括削除
wp post meta delete --all --meta-key=_oembed_*
wp post meta delete --all --meta-key=_oembed_time_*

ステップ5:ブロックエディタで「埋め込み」ブロックを使う

URLを直接本文に貼るのではなく、ブロックエディタの「埋め込み」ブロックを追加し、URLを入力する方法が確実です。

ブロック追加 → 「埋め込み」→ サービスを選択(YouTube・Twitter等)→ URLを入力

ステップ6:タイムアウトを延長

oEmbedリクエストのタイムアウトが短すぎる場合:

add_filter('http_request_timeout', function($timeout) {
    return 30; // デフォルト5秒を30秒に延長
});

注意事項

  • X(旧Twitter)の埋め込みAPIは2023年以降に仕様変更があり、無料プランでは制限がある場合があります
  • Instagramの埋め込みはFacebook Developer登録と審査が必要な場合があります
  • wp_oembed_get() でテストすると埋め込みHTMLを取得できるか確認できます

まとめ

oEmbedが動作しない最多原因はCSPのframe-src未設定とoEmbedキャッシュの問題です。CSPにサービスのドメインを追加し、wp post meta delete でキャッシュをクリアすれば多くのケースで解決します。

お気軽にご相談ください

お見積りへ お問い合わせへ