wp_embed_register_handler()


WordPress関数wp_embed_register_handler()は、カスタム埋め込みハンドラーを登録するために使用されます。この関数を使用すると、独自のURL形式を埋め込みコンテンツとして登録できます。

シンタックス

wp_embed_register_handler( string $id, string $regex, callable $callback );

引数の説明

  • $id (string) — ハンドラーの識別子。
  • $regex (string) — URLマッチングに使用される正規表現。
  • $callback (callable) — URLがマッチした際に実行されるコールバック関数。

使用例

例 1: カスタム埋め込みハンドラーの登録

以下のコードは、特定のURLパターンに対してカスタム埋め込みハンドラーを登録します。

wp_embed_register_handler(
    'custom_handler',
    '#https?://example\.com/video/([0-9]+)#i',
    function( $matches, $attr, $url, $rawattr ) {
        return '<iframe src="https://example.com/embed/' . esc_attr( $matches[1] ) . '"></iframe>';
    }
);

例 2: ショートコード内での使用

カスタム埋め込みをショートコードとして組み込む例です。

add_shortcode( 'custom_embed', function( $atts ) {
    wp_embed_register_handler(
        'custom_embed_handler',
        '#https?://custom\.site/video/(\d+)#',
        function( $matches ) {
            return '<iframe src="https://custom.site/embed/' . esc_html( $matches[1] ) . '"></iframe>';
        }
    );
} );

例 3: 動的URL埋め込み

動的に生成されるURLの埋め込みを登録するコードです。

wp_embed_register_handler(
    'dynamic_handler',
    '#https?://myvideo\.site/watch/([a-zA-Z0-9]+)#',
    function( $matches ) {
        return '<iframe src="https://myvideo.site/embed/' . esc_html( $matches[1] ) . '"></iframe>';
    }
);

例 4: 登録済み埋め込みの確認

以下のコードは、埋め込みハンドラーが登録されているか確認します。

if ( wp_embed_register_handler( 'test', '#https?://test\.com#', '__return_false' ) ) {
    echo 'ハンドラーが正常に登録されました。';
}

例 5: 複数のカスタム埋め込みハンドラー

複数のハンドラーを一度に登録する場合の例です。

wp_embed_register_handler( 'handler1', '#https?://site1\.com#', '__return_empty_string' );
wp_embed_register_handler( 'handler2', '#https?://site2\.com#', '__return_empty_string' );

注意事項

  • カスタムハンドラーは、wp_oembed_get()や埋め込み機能と連携して動作します。
  • コールバック関数内で出力されるコンテンツはHTMLとして安全にエスケープする必要があります。

関連機能: