Youtubeビデオをもっと組織的に埋め込むためにカスタムフィールドタイプを使用しようとしていますが、Do_Shortcode()を使用しても完全に機能するようですが、
<?php echo do_shortcode('[embed]http://www.youtube.com/watch?v=K0M09Ws8vpc&feature=player_embedded[/embed]'); ?>
うまくいかないようですが、同じsingle.phpファイルではこれは完全にうまくいきます。
<?php echo do_shortcode('[gallery link="file" size="thumbnail" icontag="div"]'); ?>
私はそれらをテストするために次々にそれらを置きました、なぜ[embed]ショートコードが解析されないのかという考え(それはただ何も表示しません)
私が投稿に直接ショートコードを埋め込んだ場合、それは完璧に機能します。
ありがとう、
ヨルダン
簡単に言えば[embed]
は通常のショートコードではありません。ほとんどの場合それは何もしません。投稿コンテンツがthe_content
フィルタを通過するとどうなりますか。
[emded]
は現在何もしないように登録されています(__return_false()
)
WP_Embed->run_shortcode()
フィルターは低い8
優先順位で実行されます
[embed]
はWP_Embed->shortocde()
に登録されていますdo_shortcode()
はコンテンツに対して実行されます(残りは無効になっているため、埋め込みのみを行います)。[embed]
は役に立たなくなりました。なので、試してみることにしましょう。
global $wp_embed;
echo $wp_embed->run_shortcode('[embed]whatever[/embed]');
ただし、キャッシングも含まれています(埋め込み結果は投稿のカスタムフィールドに保存されます。そうしないと、毎回HTTPリクエストを送信する必要があります)。通常は動作します。それでもそうかもしれません。
あなたのコードはうまくいくはずです、おそらくtracチケットのためのアイデアです。
それまでの間、試すことができます。
global $wp_embed;
$post_embed = $wp_embed->run_shortcode('[embed]http://www.youtube.com/watch?v=K0M09Ws8vpc&feature=player_embedded[/embed]');
echo $post_embed;
$video_url = get_post_meta($post_id, 'video_url',true);
//or
$video_url .= 'video url';
$check_embeds=$GLOBALS['wp_embed']->run_shortcode( '[embed]'. $video_url .'[/embed]' );
echo $check_embeds;