禁用在内容中自动嵌入YouTube URL

时间:2015-09-12 作者:gurung

我运行了一个基于wp和用户生成内容的小型网站。用户经常提交youtube链接。然后wordpress会自动将这些链接转换为视频unwanted in our case. 我需要重写此自动行为,以便提交的youtube链接保持在plain text urls ?

我发现我可以remove the oembed provider 用类似的东西wp_oembed_remove_provider(\'http://www.youtube.com/oembed\') 但我很困惑,我该如何在我的案例中使用它呢$content 是包含url和提交的帖子内容的字符串吗?这个codex page 没什么可说的。有人能给我举个例子说明如何做到这一点吗。

换句话说,我需要oEmbed跳过内容中的任何youtube链接。另外,请告诉我是否有更好/更有效的解决方法。

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

在函数中禁用oembed,如下所示。php:

remove_filter( \'the_content\', array( $GLOBALS[\'wp_embed\'], \'autoembed\' ), 8 );
谢谢!

SO网友:Chris Montgomery

公认的答案在我的情况下不起作用。URL仍在post编辑器中转换为嵌入。

通过查看wp-includes/class-wp-embed.php 在处理这些事情时,我发现还有其他一些事情在起作用:

// Hack to get the [embed] shortcode to run before wpautop()
add_filter( \'the_content\', array( $this, \'run_shortcode\' ), 8 );

// Shortcode placeholder for strip_shortcodes()
add_shortcode( \'embed\', \'__return_false\' );

// Attempts to embed all URLs in a post
add_filter( \'the_content\', array( $this, \'autoembed\' ), 8 );

// After a post is saved, cache oEmbed items via AJAX
add_action( \'edit_form_advanced\', array( $this, \'maybe_run_ajax_cache\' ) );
解决这个问题的方法是在我的主题文件中禁用这些,如下所示:

remove_shortcode( \'embed\' );
remove_filter( \'the_content\', [ $GLOBALS[\'wp_embed\'], \'autoembed\' ], 8 );
remove_filter( \'the_content\', [ $GLOBALS[\'wp_embed\'], \'run_shortcode\' ], 8 );
remove_action( \'edit_form_advanced\', [ $GLOBALS[\'wp_embed\'], \'maybe_run_ajax_cache\' ] );

相关推荐

YouTube oEmbedded和隐私增强模式

在iframe中嵌入youtube视频时,可以启用隐私增强模式,这样youtube在播放视频之前不会存储有关网页访问者的信息。我尝试通过oEmbed和URL嵌入视频http://www.youtube-nocookie.com/embed/xA3tfBTvH0c但它没有起作用。是否有机会使用oEmbed实现隐私友好的解决方案?编辑我找到的this proposal 并试图对其进行定制,但有一点并不是最优的。您不能使用定义的$content\\u width,因为此解决方案也需要声明高度。对这种方法有什么想