テーマ内にYouTube動画をショートコードで埋め込みたい。 他のショートコードと同じように、
echo do_shortcode( '[embed]' . $video_url . '[/embed]' );
とやっても動かない。 どうやら WP_Embed というクラスで the_content にフィルターをかけているらしい。
add_filter( 'the_content', array( $this, 'run_shortcode' ), 8 );
そして run_shortcode() のなかで embed というショートコードが作成される。
add_shortcode( 'embed', array( $this, 'shortcode' ) );
つまり、 run_shortcode() を実行しないと はショートコードとして認識してくれない。
global $wp_embed;
$video_url = 'YouTubeのURL';
echo $wp_embed->run_shortcode( '[embed]' . $video_url . '[/embed]' );
それか、ショートコードを作成すればいいので、
global $wp_embed;
$video_url = 'YouTubeのURL';
add_shortcode( 'embed', array ( $wp_embed, 'shortcode' ) );
echo do_shortcode( '[embed]' . $video_url . '[/embed]' );