web-dev-qa-db-ja.com

コンテンツ内のYouTube URLの自動oEmbedを無効にする

私は、ユーザー生成コンテンツを使って、wpに基づいて小さなサイトを運営しています。ユーザーはよくYouTubeリンクを送信します。そしてWordpressは自動的にこれらのリンクを私たちの場合は不要なビデオに変換します。送信されたYouTubeリンクがplain text urlsに残るように、この自動動作をオーバーライドする必要がありますか。

wp_oembed_remove_provider('http://www.youtube.com/oembed')のようなもので/ = - 埋め込みプロバイダ 自体を削除できることがわかりましたが、$contentが投稿された投稿コンテンツと同様にURLを含む文字列である場合にこれを使用する方法に困惑しました? コーデックスページ はそれについて多くを述べていません。誰かが私にこれがどのように行われることができるかの例を教えてもらえますか。

言い換えれば、私はコンテンツ内のすべてのYouTubeリンクをスキップするためにoEmbedが必要です。これを解決するためのより良い/より効率的な方法があるかどうかも教えてください。

1
gurung

functions.phpで以下のように埋め込みを無効にします。

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

ありがとうございます。

3
jas

私の場合、受け入れられた答えはうまくいきませんでした。 URLはまだポストエディタで埋め込みに変換されていました。

このことが扱われる 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' ] );
5