Использовать фильтр [embed] в файлах шаблонов

9

WordPress автоматически встраивает видео YouTube, если я использую:

[embed] http://www.youtube.com/watch?v=Xog1T5dUxcw [/embed ]

Это здорово, но не работает, если я использую его в файле шаблона. У меня есть настраиваемое поле, где администратор может поместить URL-адрес видео на YouTube. Я хочу получить видео в одном посте, используя следующий код:

<?php
  $custom = get_post_custom($post->ID);
  $url = $custom['_videoLink'][0];
?>
<div class="video">
  [embed]<?php $url; ?>[/embed]
</div>

Как я могу преобразовать URL-адрес Youtube в URL-адрес для встраивания, используя стандартную функцию WordPress [embed]?

Sjoerd Boerrigter
источник

Ответы:

14

Используйте wp_oembed_get( $url )вместо этого. Убедитесь, что вы echoэто в своем файле шаблона. Итак, как то так:

<?php
// tot necessary to set this but good if $url is coming from a function
$url = 'https://www.youtube.com/watch?v=jofNR_WkoCE';

// echo the function in your template to render the video
echo wp_oembed_get( $url );
?>
D3XT3R
источник
Простое и лучшее решение этой проблемы. +1
Сэм
10

Обычно вам нужно использовать do_shortcode в шаблоне для размещения шорткода вне контента, однако у меня были проблемы с встраиваемым шорткодом, и я не мог заставить его работать таким образом. Я нашел это решение, которое работает, но, возможно, есть способ сделать это с помощью do_shortcode, и я что-то пропустил.

<?php
$custom = get_post_custom($post->ID);
$url = $custom['_videoLink'][0];
if($url):
    $shortcode = '[embed]'.$url.'[/embed]';
    global $wp_embed;
    echo $wp_embed->run_shortcode($shortcode);
endif;
?>
Milo
источник
Вы также можете сделать эхо do_shortcode ($ shortcode)
keatch
@keatch - вы пробовали это специально с помощью шорткода WP embed? как я уже говорил, этот конкретный не будет работать для меня, в то время как другие короткие коды обычно работают. Я не провел большого расследования относительно того, почему. Это также не было с самой последней версией WP.
Майло
1
Я знаю, что это старая версия, но я хочу отметить, что у меня все еще осталась та же проблема в 2013 году, когда шорткод встраивания не работает в файлах шаблонов. Вышеупомянутое решение работает отлично, хотя
Экштейн