我需要WP来使用oembed显示一个url (如http://domain.com/1121 )的嵌入式表示。
我已经用一个发现链接设置了http://domain.com/1121:
<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发现插件应该启用自动发现,但是到底是什么):
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:
<?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。
我没有想法了,我的智慧也没有了。我遗漏了什么?
发布于 2011-06-30 12:55:27
您的XML根元素是“oembed”,而不是规范中给出的'OEmbed‘。根据XML规范,XML元素名称是区分大小写的。
发布于 2011-06-30 11:20:31
有两件事:
解决问题的最佳方法是:停止使用XML。使用JSON代替。
链接类型为application/json+oembed。
端点将返回json数据(使用应用程序/json的内容类型):
{
"type":"rich",
"width":"400",
"height":"342",
"html":"<b>HELLO WORLD FROM OEMBED </b>"
}事情往往会这样更好地运作。对于所有提供者来说,JSON是oEmbed的首选格式。
https://wordpress.stackexchange.com/questions/21586
复制相似问题