web-dev-qa-db-ja.com

Shortcode Embedded iframeにIDを適用する方法

埋め込みiframeをショートコードするid="myid"を追加したいのですが -

$video_url = get_post_meta($post_id, 'video_url',true);
//or
$video_url .= 'video url';
$check_embeds=$GLOBALS['wp_embed']->run_shortcode( '[embed]'. $video_url .'[/embed]' );
echo $check_embeds;

このコードを使用すると、動画のURLを使用してカスタムメタボックスで動画を表示できます。また、ここでiframeにIDを追加します。例: - <iframe id="myid" src=""></iframe>このように。誰かが問題を解決するのを手伝ってくれる?

1
Krishna Karki

1.-これをあなたの子供のテーマの関数ファイルに追加してください。

add_filter("embed_oembed_html", function( $html, $url, $attr ) { 
    if ( !empty( $attr['id'] ) ) {
        $html = str_replace( "<iframe", sprintf( '<iframe id="%s"', $attr['id'] ), $html );
    }
    return $html;
}, 10, 3);

2.-ショートコードのID属性を適用して[embed id="myid"]を使用します。

$check_embeds=$GLOBALS['wp_embed']->run_shortcode(
    '[embed id="myid"]'. $video_url .'[/embed]'
);

それが役立つことを願っています。

0
Samuel Elh

<iframe>を使用してビデオURLを埋め込むことについて話しているので、WordPressの [embed] ショートコードを使用する代わりに別のアプローチを取り、独自の[iframe]ショートコードを作成することにしました(これを追加functions.phpへ):

add_shortcode( 'iframe', 'wpse_237365_iframe_shortcode' );

function wpse_237365_iframe_shortcode( $iframe ) {
    $tags = array( // Default values for some tags
        'width' => '100%',
        'height' => '450',
        'frameborder' => '0'
    );

    foreach ( $tags as $default => $value ) { // Add new tags in array if they don't exist
        if ( !@array_key_exists( $default, $iframe ) ) {
            $iframe[$default] = $value;
        }
    }

    $html = '<iframe';
    foreach( $iframe as $attr => $value ) { // Insert tags and default values if none were set
        if ( $value != '' ) {
            $html .= ' ' . esc_attr( $attr ) . '="' . esc_attr( $value ) . '"';
        }
    }
    $html .= '></iframe>';
    return $html;
}

[埋め込み]ショートコードを取り除いてみませんか?

上記で提供したコードでは、id=属性だけでなく、追加する予定のその他の属性も追加できるため、柔軟性が大幅に向上します。

ショートコードの例1

[iframe src="https://link.to/video" id="my-id-here" width="100%" height="500"]

あなたに与えます:

<iframe src="https://link.to/video" id="my-id-here" width="100%" height="500" frameborder="0"></iframe>

ショートコードの例2

必要に応じて属性を作成することもできます。

[iframe src="https://link.to/video" scrolling="yes" custom-tag="test"]

あなたに与えます:

<iframe src="https://link.to/video" scrolling="yes" custom-tag="test" width="100%" height="450" frameborder="0"></iframe>