视频嵌入在后端工作,但不在前端解析

时间:2018-01-28 作者:Pekka

当我尝试使用以下方式之一嵌入YouTube视频时:

通过输入YouTube URL[embed] 通过媒体浏览器添加视频,对其进行快捷编码(这会导致[embed] shortcode)我在编辑器视图中看到的视频很好:

enter image description here

但在前端视图中,使用以下代码:

 $content_desktop = do_shortcode(get_the_content());
我看到了

输入纯URL时:未解析的URLenter image description here

输入[embed] 短代码或使用所见即所得编辑器:实际上什么都没有enter image description here

我检查过的东西:

我是管理员用户,因此权限应该没有问题,其他短代码也可以正常工作,DOM会显示我上面显示的内容,没有CSS干扰,我正在尝试嵌入的YouTube视频允许外部嵌入,我没有选择签入“设置”>“媒体”(显然,过去必须在那里显式打开媒体嵌入,但没有更多)

    是否有什么众所周知的原因可能导致这种情况?

1 个回复
最合适的回答,由SO网友:janh 整理而成

我刚刚查看了WP\\u嵌入类的源代码,看起来它们实际上并没有注册短代码,而是挂接到the_content 滤器

将代码更改为

$content_desktop = apply_filters("the_content", get_the_content());
或者手动触发他们的过滤器

$content_desktop = WP_Embed::run_shortcode(get_the_content());
或者,如果您喜欢对象:

$myembeds = new WP_Embed;
$content_desktop = $myembeds->run_shortcode(get_the_content());
另请参见WP_Embed::run_shortcode 在法典中source code of class-wp-embed.php.

结束