自定义 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' );

我看到的症状

当我尝试嵌入与 URL 模式匹配的内容时,返回以下错误

{
    "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 件事重叠,所以很混乱:

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...