Как добавить новый обработчик встраивания, не поддерживаемый oembed

Я ищу, чтобы вставлять видео с веб-сайтов, которые не предлагают поддержку oembed, но ссылка, предлагаемая на wp codex о wp_embed_register_handler() слишком широка для кого-то вроде меня.

Я попытался загрузить код примера в мои темы functions.php , который, как я думал, встраивал бы любое запретное видео только с URL-адреса, например, на поддерживаемые веб-сайты, такие как youtube, но только выводит ссылку на сообщение.

(обратите внимание: все ссылки отредактированы из-за моей низкой репутации).

В моем случае я пытаюсь добавить поддержку веб-сайта myvi.ru Я хотел бы вставить только URL-адрес в сообщение и автоматически сделать его выводным встроенным кодом iframe.

Например, положите

 http:/www.myvi.ru/watch/Krishtianu-Ronaldu-na-ploschadi-Madrida_I8fWfbDia0ufHwP7W85ZBg2?ap=1 

subbing // to /

это в сообщение, вместо этого нужно получить фактический код вставки, который

 iframe width="640" height="390" src="/myvi.ru/player/embed/html/o7wvdeXPclZHaazh9Rum_ZuqOtTxR2_ntg5OVhDEhxabugy0qLQDKTbQ0SRijDi8N0" frameborder="0" allowfullscreen></iframe 

<> выведен

Я подумал о том, чтобы включить в темы function.php, чтобы решить эту проблему, но не повезло.

 wp_embed_register_handler( 'myvi', '#http://(?:www)\.myvi\.ru/(?:video/embed/embed\.html|embedvideo/)\?show=([\d]+)&format=frame&height=([\d]+)&width=([\d]+)&video=(.+?)($|&)#i', 'wp_embed_handler_myvi' ); function wp_embed_handler_myvi( $matches, $attr, $url, $rawattr ) { $embed = sprintf( '<iframe src="http:/www.myvi.ru/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" allowfullscreen></iframe>', esc_attr($matches[1]), esc_attr($matches[2]), esc_attr($matches[3]), esc_attr($matches[4]) ); return apply_filters( 'embed_myvi', $embed, $matches, $attr, $url, $rawattr ); } 

Может ли кто-нибудь указать мне в правильном направлении? Я пробовал искать другие примеры, чтобы учиться, но не могу найти, и застрял. Я был бы очень признателен за любые советы или ссылки на любую информацию, которая может помочь. Благодаря!

Регистрация пользовательского обработчика встраивания

Вот пример того, как мы можем использовать wp_embed_register_handler() в вашем случае:

 /** * Register an embed handler for myvi videos */ add_action( 'init', function() { wp_embed_register_handler( 'myvi', '#http://www\.myvi\.ru/watch/([a-zA-Z0-9_-]+)$#i', // <-- Adjust this to your needs! 'myvi_embed_handler' ); } ); 

Здесь мы построили регулярное выражение таким образом, чтобы не поддерживать какие-либо параметры GET. Поэтому при тестировании вам необходимо удалить часть ?api=1 из URL-адреса. В противном случае вы можете просто настроить регулярное выражение в соответствии с вашими потребностями.

Пользовательский обработчик обратного вызова определяется как:

 /** * Handler callback for the myvi video provider */ function myvi_embed_handler( $matches, $attr, $url, $rawattr ) { $embed = sprintf( '<iframe src="http://myvi.ru/player/embed/html/%1$s" width="600" height="400" frameborder="0" allowfullscreen></iframe>', esc_attr( $matches[1] ) ); return apply_filters( 'myvi_embed_handler', $embed, $matches, $attr, $url, $rawattr ); } 

Обратите внимание, что здесь мы предполагаем, что вся необходимая информация встраивания содержится в видеосвязи.

Вот как это будет работать в редакторе:

тестирование myvi

Вы должны делать это только для сайтов, которым вы действительно доверяете !