使WordPress成为核心

开的13年前

关闭12年前

上次修改时间11年前

#16996 关闭 增强 (固定的)

oEmbed:允许指定自定义参数

报告人: newmediarts简介 新媒体 所有者: 纳金的个人资料 珍珠蛋白
里程碑: 3.5 优先: 正常的
严重程度: 正常的 版本: 3.1
组件: 嵌入 关键词: has-patch接口 需求-测试
重点: 复写的副本:

描述

Vimeo,可能还有其他供应商,允许传递自定义参数获取oEmbed代码以自定义返回的播放器HTML(例如。颜色,自动播放等等)。

目前,似乎只有最大高度最大宽度论据通过了获取oEmbed数据时。

然而,我想这样做:

http://vimeo.com/12345?color=7AB800

#=>http://vimeo.com/api/oembed.xml?url=http%3A//vimeocom/12345&color=7AB800

这让我可以定制播放器的颜色。

附件(6)

16996差异(818字节)-由添加雅各布格 13年前.
允许任何自定义[embed]参数传递到oEmbed请求的初始补丁
16996-2.差异(1.2 KB)-由添加雅各布格 13年前.
16996-3.迪夫(556字节)-由添加γ-γ 13年前.
16996-4差异(562字节)-由添加γ-γ 13年前.
将$url作为参数传递
16996-5.迪夫(1.3 KB)-由添加雅各布格 13年前.
从短代码和URL传递自定义参数-我们需要检查是否需要过滤这些参数(它当前还将发现参数传递给oEmbed提供程序忽略的请求)
16996过滤器.diff(645字节)-由添加奥托42 12年前.
更简单的过滤器,使参数易于插入

将所有附件下载为:.zip文件

更改历史记录(33)

#1 @新媒体
13年以前

  • 复写的副本 gabrielmansour@…补充

@雅各布格
13年以前

允许任何自定义[embed]参数传递到oEmbed请求的初始补丁

#2 @雅各布格
13年以前

  • 复写的副本 雅各布格补充
  • 关键词 has-patch接口补充

我添加了一个补丁,只将任何自定义短代码参数传递给oEmbed请求-我必须进行一些取消设置,因为oEmbed-maxwidth和maxheight被称为width and height。

#3 @新媒体
13年以前

谢谢你的初始补丁,jacobwg!

而不是使用foreach公司声明,添加查询参数()让您传入一个关联的参数数组,这样您就可以这样做了,这要干净得多:

add_query_arg($args,$provider);

此修补程序还会影响在帖子内容中自动转换的oEmbed URL吗?这是我最感兴趣的。

#4 @雅各布格
13年以前

好吧,对不起,我还没有回到这个话题。。。我当时的印象是,当有新的评论时,Trac会给我发电子邮件,但由于我没有告诉Trac我的电子邮件地址,我不知道我怎么认为这会奏效

最初,我不认为它会影响oEmbed URL……我会很快添加一个新补丁。

@雅各布
13年以前

#5 @雅各布格
13年以前

  • 关键词 需求-测试补充

接受以下优先顺序的参数的新修补程序:

短代码参数、URL参数、默认oEmbed参数

此外,这是针对3.2的,因为我们使用的是一个仅适用于PHP5的函数来解析URL查询字符串。(没有3.2版本选项?)

上次编辑时间13年前通过雅各布格(以前的)(差异)

#6 @γ-γ
13年以前

你不应该取消设置任何参数。

虽然我同意你应该能够传递额外的参数。所以我认为过滤器是最好的选择。

附加补丁。

@γ-γ
13年以前

@γ-γ
13年以前

将$url作为参数传递

#7 @珍珠蛋白
13年以前

我们可能需要为YouTube添加一个参数#17108.

#8 @新媒体
13年以前

r-a-y的解决方案可以解决我的站点的需求,因为我想为该站点全局更改播放器颜色,所以我可以使用添加筛选器在我的主题中添加附加参数函数.php文件。然而,我不知道这是否能解决更大的总体问题,即能够基于per-oEmbed-URL传递参数。

我将在本周有空的时候测试一下这个补丁。

#9 @γ-γ
13年以前

如果使用parse_URL()函数查看URL字符串中是否存在任何参数(您想要的),那么可以使用过滤器在每个URL的基础上添加参数(而不是短代码)。

如果它们存在,则可以将其附加到$provider。如果没有,不要添加。

#10 @雅各布格
13年以前

虽然我同意应该添加一个过滤器,但对于那些没有权限访问代码(作者、编辑等)但希望粘贴到类似URI中的用户来说,这仍然不能解决问题http://vimeo.com/12345?color=7AB800并更改颜色。

@雅各布格
13年以前

从短代码和URL传递自定义参数-我们需要检查是否需要过滤这些参数(它当前还将发现参数传递给oEmbed提供程序忽略的请求)

#11 @雅各布格
13年以前

该修补程序应该允许来自短代码和URI的参数,这些参数通过过滤器传递,以便对基本上任何内容进行代码内修改。

#12 @γ-γ
13年以前

仅供参考,如果传递带有任何附加参数的短代码,WP将自动添加这些参数。

您只需要确保添加任何自定义参数(例如颜色)通过我修补程序中的过滤器发送到$provider。

#13 @拉穆努斯
13年以前

  • 复写的副本 雷穆努斯@…补充

#14 @拉穆努斯
13年以前

对于3.3?

#15 @米奇班迪
13年以前

我希望尽快在WP核心中看到这一点,但有一件事需要添加,即每个提供者的默认参数行,因为像YouTube这样的提供者在默认情况下应该有一个iframe=1参数。#17108
否则,这应该尽快得到:)我真的希望在默认情况下或通过一个简单的过滤器来嵌入HTML5。

上次编辑时间13年前通过米奇班迪(以前的)(差异)

#16 @红墙hp
13年以前

我也希望很快能看到这一点。一些oEmbed提供程序(如Twitter)将JavaScript包含在每个嵌入的HTML中。他们提供了一个参数来防止这种情况发生,如果你已经包含了脚本,许多主题和插件都会为“Retweet”按钮做这件事,但WordPress中的oEmbed API还没有使其易于禁用。插件不仅能够在注册oEmbed提供程序时定义默认参数,而且能够通过过滤器修改这些参数,这将非常有用。

(顺便说一句,我有点惊讶没有人提交罚单,默认情况下将Twitter列入oEmbed白名单……)

#17 @珍珠蛋白
12年以前

我想我之前已经在这里发布过了,但是任意的自定义参数可能会导致安全漏洞。

oEmbed是关于信任的-您信任提供者返回安全的信息。目前,用户唯一能影响的是建议的宽度和高度。更多参数意味着可以注入原始CSS、JavaScript或HTML,所有这些都是不安全的;或者一个未初始化的参数(我们遇到了提供者将宽度和高度作为整数进行简单消毒的问题),等等。

这里的不同过滤器(如果还没有)可能是我们能做的最好的,允许A)插件向oEmbed获取添加更多参数,以及B)插件在每个提供者的基础上为oEmbed-shortcode添加更多可接受的参数。

@奥托42
12年以前

更简单的过滤器,使参数易于插入

#18 随访: @奥托42
12年以前

16996-filter.diff添加了最简单的过滤器来完成我能想到的工作。

通过此过滤器,插件可以使用以下代码启用任意参数:

添加过滤器('embed_fetch_url','foo',10,3);函数foo($provider,$args,$url){foreach($args作为$key=>$value){开关($key){案例“宽度”:案例“高度”:case“discover”://忽略这些参数断裂;违约:$provider=add_query_arg($key,$value,$provider);断裂;}}返回$provider;}

或者,它可以使用URL参数来更加离散。提供者URL字符串是完整传递的,因此可以使用remove_query_arg之类的东西来删除宽度(这在Twitter的oembed实现中有时有些可取)。

#19 @DrewA图片
12年以前

  • 复写的副本 xoodrew@…补充

#20 答复: 18 @DrewA图片
12年以前

回复奥托42:

16996-filter.diff添加了最简单的过滤器来完成我能想到的工作。

+1用于过滤器。有时更改全局高度/宽度是不够的,并且它不是所有嵌入的最佳解决方案。

#21 @珍珠蛋白
12年以前

  • 里程碑已从更改等待审查3.5
  • 类型已从更改功能请求增强

#22 @珍珠蛋白
12年以前

  • 所有者设置为珍珠蛋白
  • 分辨率设置为固定的
  • 状态已从更改新的关闭

[21839]:

在发送请求之前,引入要应用的oembed_fetch_url过滤器。

props Otto42,r-a-y.修复#16996.

#23 @珍珠蛋白
12年以前

[21840]:

为中引入的oembed_fetch_url过滤器切换$args和$url[21839]。更符合逻辑,特别是考虑到传递给fetch()的参数的顺序。看见#16996.

#24 @克利夫·保利克
12年以前

  • 复写的副本 tko@…补充

这里不是uber-dev。。。试图跟随。。。

我使用SmugMug嵌入没有“品牌化”的视频(例如右下角的SmugMug-smiley脸、YouTube徽标、Vimeo文本等)。下面是他们为此生成的iframe代码:<iframe frameborder=“0”scrolling=“no”width=“640”height=“360”src=“http://api.smugmug.com/services/embed/1344454513_PQSXrW6?width=640&height=360&nologo“></iframe>
看到URI的高度、宽度和nologo部分了吗?

如果我输入
http://media.tourkick.com/Tours/20110615-4116-S-Atlanta-Ve/77612601_LV3TVq
它只是纯文本,如果我输入
[嵌入]http://media.tourkick.com/Tours/20110615-4116-S-Atlanta-Ave/17612601_LV3TVq[/嵌入]
尽管SmugMug被列在http://codex.wordpress.org/嵌入#Okay.2C_So_What_Sites_Can_I_Embed_From.3F

那么,我在SmugMug嵌入中缺少了什么(它不做视频,只做照片,两者兼而有之),以及如何&诺洛戈加入oEmbed(我需要一个自定义函数/插件,还是应该只使用他们生成的iframe代码,而不是依赖oEmbed)?

感谢您帮助理解所有这些oEmbed内容。

供参考:http://wiki.smugmug.net/display/API/oEmbed(它在我头上)

#25 随访: @奥托42
12年以前

@cliffpaulick:这是一个你应该在WordPress.org支持论坛上提出的问题,但“media.tourkick.com”不是“smugmug.com”。尝试使用视频或图像文件的实际smugmug.com URL。

#26 答复: 25 @克利夫·保利克
12年以前

回复奥托42:

@cliffpaulick:这是一个你应该在WordPress.org支持论坛上提出的问题,但“media.tourkick.com”不是“smugmug.com”。尝试使用视频或图像文件的实际smugmug.com URL。

谢谢,奥托。

media.tourkick.com是smugmug.com的CNAME,因此将链接从http://media.tourkick.com/Tours/20110615-4116-S-Atlanta-Ave/17612601_LV3TVqhttp://smugmug.com/Tours/20110615-4116-S-Atlanta-Ave/17612601_LV3TVq做得很好。它开始播放幻灯片(jpeg预览图像,而不是播放视频)。但是http://smugmug.com/Tours/20110615-4116-S-Atlanta-Ave/17612601_LV3TVq#!i=1344454513&amp;k=PQSXrW6只嵌入视频并能够播放。

无论如何,很抱歉在其中发布了2个问题(这个问题可能应该出现在支持论坛上)。

以下是我在这里发布的原因。。。谈论其他参数。。。比如URL中的“nologo”,就像iframe嵌入代码可以做的一样。这是已经可以做的事情,还是在更新后就可以做?

注:请参阅TracTickets公司有关使用的帮助门票。