自定义 oembed 提供程序未添加到 Wordpress
Custom oembed provider not getting added to Wordpress
我想达到的目标
我想向我的 wordpress 站点添加自定义 oembed 提供程序。
自定义 oembed 提供程序是我自己的网络应用程序。
我实现了什么
我已将以下代码添加到我的主题的 functions.php 文件中,遵循 official documentation 和在线找到的示例:
function custom_oembed_provider() {
error_log("UPDATING PROVERS LIST FAILS HERE FOR SOME REASON");
wp_oembed_add_provider('(https?:\/\/)?((www)\.)?myip:5000\/figure\/.*', 'http://myip:5000/services/oembed',true);
}
add_action( 'init', 'custom_oembed_provider' );
我看到的症状
当我尝试嵌入与 URL 模式匹配的内容时,我在 return 中收到以下错误:
{
"code": "oembed_invalid_url",
"message": "Not Found",
"data": {
"status": 404
}
}
我找到的原因
根据我查阅的源代码,这是因为我的 url 不匹配任何已知的提供者。
事实上,感谢伟大的 wp-cli 工具,我进行了检查,已知提供者列表仅包含 docs 中描述的默认 wordpress 白名单 oembed 提供者,如您在此屏幕截图中所见:
result from list providers command
但是,我知道 wp_omebed_add_provider 已被调用,它会记录“更新提供商”消息。
我试过的
一些我尝试过但没有成功的事情:
- 使用其他自定义提供程序而不是我的(这似乎与提供程序本身无关)
- 改变主题
- 以不同的方式和位置声明 wp_oembed_add_provider 函数
- 正在更新 php 版本
- 运行 在本地安装的 wordpress 5.7.2
上进行相同的测试
知道如何解决这个问题吗?这是我正在构建的网站的一个重要功能:( 谢谢!
PS : 我 运行 PHP 7.3 和 Wordpress 5.7.2 在托管 OVH Web public 云上。
我已经解决了,有 3 个重叠因此造成了混乱:
- wp-cli 打印的自定义提供者列表似乎没有打印自定义添加的提供者,所以我的调试很混乱
- 正如一些评论指出的那样,我的正则表达式写得不正确(谢谢)
- 我在测试结束时有一个额外的 / url,这导致 oembed 提供程序崩溃,而 wordpress 返回的错误是 'oembed_invalid_url',我没有看到它
我想达到的目标
我想向我的 wordpress 站点添加自定义 oembed 提供程序。 自定义 oembed 提供程序是我自己的网络应用程序。
我实现了什么
我已将以下代码添加到我的主题的 functions.php 文件中,遵循 official documentation 和在线找到的示例:
function custom_oembed_provider() {
error_log("UPDATING PROVERS LIST FAILS HERE FOR SOME REASON");
wp_oembed_add_provider('(https?:\/\/)?((www)\.)?myip:5000\/figure\/.*', 'http://myip:5000/services/oembed',true);
}
add_action( 'init', 'custom_oembed_provider' );
我看到的症状
当我尝试嵌入与 URL 模式匹配的内容时,我在 return 中收到以下错误:
{
"code": "oembed_invalid_url",
"message": "Not Found",
"data": {
"status": 404
}
}
我找到的原因
根据我查阅的源代码,这是因为我的 url 不匹配任何已知的提供者。
事实上,感谢伟大的 wp-cli 工具,我进行了检查,已知提供者列表仅包含 docs 中描述的默认 wordpress 白名单 oembed 提供者,如您在此屏幕截图中所见:
result from list providers command
但是,我知道 wp_omebed_add_provider 已被调用,它会记录“更新提供商”消息。
我试过的
一些我尝试过但没有成功的事情:
- 使用其他自定义提供程序而不是我的(这似乎与提供程序本身无关)
- 改变主题
- 以不同的方式和位置声明 wp_oembed_add_provider 函数
- 正在更新 php 版本
- 运行 在本地安装的 wordpress 5.7.2 上进行相同的测试
知道如何解决这个问题吗?这是我正在构建的网站的一个重要功能:( 谢谢!
PS : 我 运行 PHP 7.3 和 Wordpress 5.7.2 在托管 OVH Web public 云上。
我已经解决了,有 3 个重叠因此造成了混乱:
- wp-cli 打印的自定义提供者列表似乎没有打印自定义添加的提供者,所以我的调试很混乱
- 正如一些评论指出的那样,我的正则表达式写得不正确(谢谢)
- 我在测试结束时有一个额外的 / url,这导致 oembed 提供程序崩溃,而 wordpress 返回的错误是 'oembed_invalid_url',我没有看到它