Wordpress (Pods) oEmbed Items



我使用奇妙的pod插件扩展Wordpress的基本内容类型与一些自定义的。我已经构建了一个高级自定义类型,这意味着我无法获得内置到本机页面/帖子类型中的自动oEmbed支持。我已经构建了它,所以我的自定义内容类型有一个使用PHP页面模板的pod页面,我有oEmbed选项为我的WYISWYG字段启用,可以嵌入视频。

我发现这篇文章似乎表明一个基本的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>

field()获取字段的值,display()获取字段的输出(通过该字段配置运行的任何相关过滤器/函数运行)

$mycontent = $pods->field('field_body');
应该

$mycontent = $pods->display('field_body');

更多信息请参见http://pods.io/docs/field/vs http://pods.io/docs/display/

调用apply_filters('oembed_dataparse', $mycontent)是不正确的,因为这意味着添加处理其他数据类型(照片,视频等)的功能,默认情况下不满足。你要做的就是模仿WordPress嵌入的方式。我没有测试下面的代码,但在我看来,这是触发嵌入功能的方式:

global $wp_embed;
$mycontent = $pods->field('field_body');
$output = $wp_embed->autoembed($mycontent);
echo $output;

相关内容

  • 没有找到相关文章

最新更新