Вопрос: WP_embed_register_handler не работает

Я попробовал пример в этой ссылке 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 );}

Есть идеи, почему это не работает?

Ответы и комментарии:

Какой URL вы тестируете?
Создан 06-09-2016 09:06 birgire

это http://www.forbes.com/video/5049647995001/
Создан 06-09-2016 09:29 kmligue

это далеко от принятой структуры URL в обработчике, я думаю, что сервис встраивания Forbes изменился с тех пор, как был добавлен этот пример.
Создан 06-09-2016 10:16 birgire

Спасибо! Код работает на пост редактора. Я вижу, вставлять в блоге. В настоящее время я использую buddypress на моем сайте. При публикации ссылки на странице активности это не сработало. Согласно buddypress (codex.buddypress.org/getting-started/embeds) они используют встроенную функциональность встраивания wp. Может ли это быть проблемой buddypress?
Создан 07-09-2016 01:04 kmligue

Рад слышать, что это сработало. Прошло много времени с тех пор, как я в последний раз использовал BuddyPress, но если он работает в редакторе содержимого постов, а не на страницах активности, то это звучит как проблема для BuddyPress. @KelvinMartinLigue
Создан 07-09-2016 08:35 birgire

Я изменил пример, который вы опубликовали в Кодексе:
/ **
 * Встроить поддержку видео Forbes
 *
 * Пример использования:
 *
 * http://www.forbes.com/video/5049647995001/
 * /
add_action ('init', function ()
{
    wp_embed_register_handler (
        «Форбс»,
        '#Http: // WWW .forbes .com / видео / ([ d] +) / # я?',
        'wp_embed_handler_forbes'
    );

});

функция wp_embed_handler_forbes ($ соответствует, $ attr, $ url, $ rawattr)
{
    $ embed = sprintf (
        ' iframe> ',
        esc_attr ($ соответствует [1])
     );

    return apply_filters ('embed_forbes', $ embed, $ match, $ attr, $ url, $ rawattr);
}

В настоящее время iframe имеет фиксированную высоту и ширину.
Надеемся, что вы можете настроить его в соответствии со своими потребностями, например, используя тему $ content_width или передавайте информацию о высоте / ширине непосредственно из вставленного URL-адреса видео.
Обновление: я добавил предупреждение на страницу Кодекса, пока не будет опубликован лучший пример.
Создан 06-11-2016 09:36