web-dev-qa-db-ja.com

ビデオ埋め込みはバックエンドで動作しますが、フロントエンドでは解析されません

次のいずれかの方法でYouTubeビデオを埋め込もうとしました。

  • YouTubeのURLを入力して
  • [embed]ショートコードを入力して
  • メディアブラウザを介してビデオを追加することにより([embed]ショートコードになります)

私はビデオをエディタビューで見ています。

enter image description here

しかし、フロントエンドビューでは、次のコードを使用します。

 $content_desktop = do_shortcode(get_the_content());

私は見ています

  • 純粋なURLを入力する場合:未解析のURL enter image description here

  • [embed]ショートコードを入力するとき、またはWYSIWYGエディタを使用するとき:文字通り何もしない enter image description here

私がチェックしたもの:

  • 私は管理者ユーザーなので、権利に問題はないはずです
  • 他のショートコードはうまくいきます
  • DOMは文字通り私が上に示したものを示しています、CSS干渉はありません
  • 埋め込みしようとしているYouTube動画は外部埋め込みを許可しています
  • [設定]> [メディア]をチェックインするオプションはありません(明らかに、メディアの埋め込みを明示的にオンにする必要があったようですが、それ以上はありません)。

これを引き起こす可能性があることがよく知られている何かはありますか?

1
Pekka 웃

WP_Embedクラスのソースを見たところ、実際にはショートコードを登録しているのではなく、the_contentフィルタにフックしているようです。

コードをに変更します。

$content_desktop = apply_filters("the_content", get_the_content());

または手動で次のような方法でフィルタを起動します

$content_desktop = WP_Embed::run_shortcode(get_the_content());

あるいは、オブジェクトが欲しい場合は、

$myembeds = new WP_Embed;
$content_desktop = $myembeds->run_shortcode(get_the_content());

Codexの WP_Embed :: run_shortcode 、および source-class-wp-embed.php も参照してください。

1
janh