私はこのリンクの例を試してみました https://codex.wordpress.org/Function_Reference/wp_embed_register_handler しかしうまくいきませんでした。これは私の全体のコードです:
add_action('init', function() {
wp_embed_register_handler( 'forbes', '#http://(?:www|video)\.forbes\.com/(?:video/embed/embed\.html|embedvideo/)\?show=([\d]+)&format=frame&height=([\d]+)&width=([\d]+)&video=(.+?)($|&)#i', 'wp_embed_handler_forbes' );
});
function wp_embed_handler_forbes( $matches, $attr, $url, $rawattr ) {
$embed = sprintf(
'<iframe src="http://www.forbes.com/video/embed/embed.html?show=%1$s&format=frame&height=%2$s&width=%3$s&video=%4$s&mode=render" width="%3$spx" height="%2$spx" frameborder="0" scrolling="no" marginwidth="0" marginheight="0"></iframe>',
esc_attr($matches[1]),
esc_attr($matches[2]),
esc_attr($matches[3]),
esc_attr($matches[4])
);
return apply_filters( 'embed_forbes', $embed, $matches, $attr, $url, $rawattr );
}
なぜこれがうまくいかないのですか?
コーデックスから投稿した例を修正しました。
/**
* Embed support for Forbes videos
*
* Usage Example:
*
* http://www.forbes.com/video/5049647995001/
*/
add_action( 'init', function()
{
wp_embed_register_handler(
'forbes',
'#http://www\.forbes\.com/video/([\d]+)/?#i',
'wp_embed_handler_forbes'
);
} );
function wp_embed_handler_forbes( $matches, $attr, $url, $rawattr )
{
$embed = sprintf(
'<iframe class="forbes-video" src="https://players.brightcove.net/2097119709001/598f142b-5fda-4057-8ece-b03c43222b3f_default/index.html?videoId=%1$s" width="600" height="400" frameborder="0" scrolling="no"></iframe>',
esc_attr( $matches[1] )
);
return apply_filters( 'embed_forbes', $embed, $matches, $attr, $url, $rawattr );
}
現在のiframe
は固定のheightとwidthを持っています。
うまくいけばあなたのニーズに合わせて調整することができます。テーマの$content_width
を使用するか、貼り付けたビデオのURLから直接高さ/幅の情報を渡します。
更新: Codexページに 警告を追加しました より良い例が投稿されるまで。