首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wordpress拒绝显示oembed

Wordpress拒绝显示oembed
EN

WordPress Development用户
提问于 2011-06-30 10:04:08
回答 2查看 1K关注 0票数 3

我需要WP来使用oembed显示一个url (如http://domain.com/1121 )的嵌入式表示。

我已经用一个发现链接设置了http://domain.com/1121

代码语言:javascript
复制
<link href="http://www.domain.com/generator/oembed/?url=http%3A//domain.com/1121" rel="alternate" type="text/xml+oembed" />

我知道WP不再自动发现可嵌入的URL,所以我安装了启用-o嵌入-发现插件来重新启用这个特性。

我已经监控了我的apache日志,并确认WP确实点击了这个链接来发现--所以我想插件可以工作,但是URL从未被转换过。

我甚至写了一个插件来白名单我的自定义URL (真的不应该需要,因为启用-oembed发现插件应该启用自动发现,但是到底是什么):

代码语言:javascript
复制
add_action( 'init', 'my_oembed_provider' );

function my_oembed_provider() {
    wp_oembed_add_provider( 'http://domain.com/*', 'http://www.domain.com/generator/oembed/', false);
}

但还是什么都没有。

对API端点(http://www.domain.com/generator/oembed/)进行了硬编码以生成以下XML:

代码语言:javascript
复制
        <?xml version="1.0" encoding="UTF-8"?>
        <OEmbed>
            <type>rich</type>
            <width>400</width>
            <height>342</height>
            <html><![CDATA[<b>HELLO WORLD FROM OEMBED </b>]]></html>
        </OEmbed>

API端点按照header("Content-type: text/xml");的要求发送正确的内容类型标头( 嵌入规范 )。

添加post的用户具有管理权限,因此允许unfiltered_html

我没有想法了,我的智慧也没有了。我遗漏了什么?

EN

回答 2

WordPress Development用户

回答已采纳

发布于 2011-06-30 12:55:27

您的XML根元素是“oembed”,而不是规范中给出的'OEmbed‘。根据XML规范,XML元素名称是区分大小写的。

票数 3
EN

WordPress Development用户

发布于 2011-06-30 11:20:31

有两件事:

  1. WordPress的oEmbed实现更喜欢并更好地使用JSON。
  2. 要使用XML,WordPress需要使用库。如果没有,你可能会得到你看到的结果。它得到了XML,但是没有simplexml就无法解析它,所以.什么都没发生。

解决问题的最佳方法是:停止使用XML。使用JSON代替。

链接类型为application/json+oembed。

端点将返回json数据(使用应用程序/json的内容类型):

代码语言:javascript
复制
{
"type":"rich",
"width":"400",
"height":"342",
"html":"<b>HELLO WORLD FROM OEMBED </b>"
}

事情往往会这样更好地运作。对于所有提供者来说,JSON是oEmbed的首选格式。

票数 4
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/21586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档