自定义 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 已被调用,它会记录“更新提供商”消息。

我试过的

一些我尝试过但没有成功的事情:

知道如何解决这个问题吗?这是我正在构建的网站的一个重要功能:( 谢谢!

PS : 我 运行 PHP 7.3 和 Wordpress 5.7.2 在托管 OVH Web public 云上。

我已经解决了,有 3 个重叠因此造成了混乱:

  1. wp-cli 打印的自定义提供者列表似乎没有打印自定义添加的提供者,所以我的调试很混乱
  2. 正如一些评论指出的那样,我的正则表达式写得不正确(谢谢)
  3. 我在测试结束时有一个额外的 / url,这导致 oembed 提供程序崩溃,而 wordpress 返回的错误是 'oembed_invalid_url',我没有看到它