如何解决自定义 oembed 提供程序未添加到 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' );
我看到的症状
{
"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:我在托管的 OVH Web 公共云上运行 PHP 7.3 和 wordpress 5.7.2。
解决方法
我已经解决了,有 3 件事重叠,所以很混乱:
- wp-cli 打印的自定义提供程序列表似乎没有打印自定义添加的提供程序,所以我的调试很混乱
- 正如一些人在评论中指出的那样,我的正则表达式没有正确编写(谢谢)
- 我的测试 url 末尾有一个额外的 /,这导致 oembed 提供程序崩溃,而 wordpress 返回的错误是“oembed_invalid_url”,我没有看到
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。