【问题标题】:Wordpress (Pods) oEmbed ItemsWordpress (Pods) oEmbed 项目
【发布时间】:2013-03-25 21:32:14
【问题描述】:

我正在使用出色的 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>

【问题讨论】:

    标签: wordpress iframe oembed podscms


    【解决方案1】:

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

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

    应该是

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

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

    【讨论】:

    • 这个问题解决了吗?我以为我在最近的补丁中看到了它,但所见即所得字段上的display 似乎仍然无法正确输出 Youtube 嵌入。如果有影响,我将使用高级自定义类型。
    【解决方案2】:

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

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

    【讨论】:

    • 谢谢,但我认为图像可能是 pod 页面的呈现方式。普通的 Youtube &lt;iframe&gt; 嵌入在模板中完整写出时加载为空,而 &lt;object&gt; 嵌入由于某种原因工作。除非有办法使用 autoembed 生成对象,否则即使它确实将 URL 转换为嵌入也无济于事。
    • 渲染的 iframe 应该是空白的。使用自动关闭 iframe 标记并查看结果。我刚刚测试了 youtube embed,生成的 iframe 类似于
    • 好吧,我一直在玩弄存储在 Pods 模板部分的模板和其他生成页面内容的方法,现在,突然之间,iFrames(由 Wordpress 硬编码和生成)又开始工作了!?但是,您上面的代码似乎没有处理正文中的 URL。可以在 Pod Page 模板中间使用吗? (我在管理员中有一个页面模板设置为指向我的主题文件夹中的 PHP 模板)
    • 代码可以在任何地方工作,只要您传递包含可嵌入网址的文本。
    • 即使我直接$mycontent = 'http://www.youtube.com/watch?v=dQw4w9WgXcQ';,使用上面的代码也不起作用。
    猜你喜欢
    • 1970-01-01
    • 2016-01-11
    • 2021-11-16
    • 2018-03-25
    • 1970-01-01
    • 2021-08-30
    • 2015-10-08
    • 2013-11-10
    • 1970-01-01
    相关资源
    最近更新 更多