1

我正在使用出色的 Pods 插件来扩展 Wordpress 的基本内容类型,并添加了一些自定义内容类型。我已经构建了一个高级自定义类型,这意味着我没有获得内置到本机页面/帖子类型中的自动 oEmbed 支持。我对其进行了结构化,因此我的自定义内容类型有一个使用 PHP 页面模板的 pod 页面,并且我为可以嵌入视频的 WYISWYG 字段启用了 oEmbed 选项。

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

2 回答 2

1

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

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

应该

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

有关更多信息,请参阅http://pods.io/docs/field/http://pods.io/docs/display/

于 2013-03-25T23:20:46.570 回答
0

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

global $wp_embed;

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

$output = $wp_embed->autoembed($mycontent);

echo $output;
于 2013-03-25T22:13:51.273 回答