web-dev-qa-db-ja.com

特定のサイトからのiframeを許可しますか?

Ksesフィルタリングを使用すると、WordPressは投稿またはページ内のhtmlタグのサブセットのみを許可し、取り除いたタグの1つは<iframe>タグです(多くの理由により))。

編集者に、srcが他のサブドメインの1つ、または指定されたドメインのホワイトリストからのものであるiframeを含めることを許可しますが、それでも他の不明なsrcは削除します。 ksesをバイパスしてすべての<iframe>を許可するのは簡単ですが、特定のドメインのみを許可することはできますか?

1
joetek

埋め込みハンドラーを登録wp_embed_register_handlerで行います。これにより、URLをコピーしてエディターに貼り付けるだけでなく、iframeのプレビューを表示できるという利点が追加されます。

add_action( 'init', 'se238330_register_embed_handler' );

function se238330_register_embed_handler() {
    wp_embed_register_handler( 
        'joetek',
        '#http://subdomain.yourdomain\.com/(.+)/?#i',
        'wp_embed_handler_joetek'
    );
}

function wp_embed_handler_embed_name( $matches, $attr, $url, $rawattr ) {
    $embed = sprintf(
        '<iframe class="joetek-website" src="http://subdomain.yourdomain.com/%1$s/" width="600" height="400" frameborder="0" scrolling="no"></iframe>',
        esc_attr( $matches[1] )
    );

    return apply_filters( 'embed_joetek', $embed, $matches, $attr, $url, $rawattr );
}

上記のコードは、joetekが埋め込みの名前であると想定しています:)埋め込み可能なページに一致するように、wp_embed_register_handlerの2番目のパラメーターとコールバック関数の正規表現を更新する必要があります。あなたのウェブサイトで。

1
Dylan