在模板文件中使用[嵌入]过滤器


9

如果我使用以下方法,WordPress会自动嵌入youtube视频:

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

很好,但是如果我在模板文件中使用它就行不通。我有一个自定义字段,管理员可以在其中输入YouTube视频的网址。我想使用以下代码将视频发布到单篇文章中:

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

如何使用标准WordPress [嵌入]函数将Youtube URL转换为嵌入URL?

Answers:


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 );
?>

简单,最佳的解决方案。+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;
?>

您也可以执行echo do_shortcode($
shortcode

@keatch-您是否使用WP的embed短码专门尝试了此操作?正如我提到的,特定的代码对我不起作用,而其他短代码通常可以。关于原因,我没有做太多调查。最新的WP版本也没有此功能。
米洛2012年

1
我知道这已经很老了,但要指出的是,由于模板代码中嵌入的简码无法正常使用,2013年我仍然遇到同样的问题。上面的解决方案效果很好。
Eckstein
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.