我正在使用梦幻般的Pods插件来扩展Wordpress的基本内容类型和一些自定义内容类型。我已经构建了一个高级自定义类型,这意味着我没有在本机页面/帖子类型中内置自动oEmbed支持。我已经构建了它,所以我的自定义内容类型有一个使用PHP页面模板的pod页面,我为可以嵌入视频的WYISWYG字段启用了oEmbed选项。
我发现this post似乎表明基本的apply_filter
函数应该自动处理任何嵌入,但我似乎无法让它工作。我对过滤器有点新意。我试过的代码如下:
<?php
// Fetch body field content from $pods object
$mycontent = $pods->field('field_body');
$output = apply_filters('oembed_dataparse', $mycontent);
echo $output;
?>
我尝试了各种不同的过滤器,例如the_content
和其他过滤器,但似乎都没有。我相信它可能是Pod页面的范围/冲突问题,因为即使将整个iFrame嵌入代码写入模板也行不通,但只显示空的iFrame。全局oembed函数也是如此,即
$videourl = 'http://www.youtube.com/watch?v=dQw4w9WgXcQ';
$htmlcode = wp_oembed_get($videourl);
echo $htmlcode;
在页面模板的上下文中将输出:
<iframe width="500" height="375" frameborder="0" allowfullscreen="" src="http://www.youtube.com/embed/dQw4w9WgXcQ?feature=oembed">
<html>
<head>
</head>
<body>
</body>
</html>
</iframe>
答案 0 :(得分:0)
调用apply_filters('oembed_dataparse', $mycontent)
不正确,因为这意味着要添加处理默认情况下未提供的其他数据类型(照片,视频等)的功能。你想要做的是模仿WordPress如何进行嵌入。我没有测试下面的代码,但在我看来,触发嵌入功能的方式如下:
global $wp_embed;
$mycontent = $pods->field('field_body');
$output = $wp_embed->autoembed($mycontent);
echo $output;
答案 1 :(得分:0)
field()获取字段的值,display()获取字段的输出(遍历任何相关的过滤器/函数,字段配置为运行)。
$mycontent = $pods->field('field_body');
应该是
$mycontent = $pods->display('field_body');
有关详细信息,请参阅http://pods.io/docs/field/ vs http://pods.io/docs/display/