如何将ID应用于对嵌入的IFRAME进行短码

时间:2016-08-28 作者:Krishna Karki

我想添加一个id="myid" 要对嵌入式iframe进行短编码,请执行以下操作:-

$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>像这样。有人能帮我解决这个问题吗?

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

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现在使用[embed id="myid"] 在短代码中应用ID属性。

$check_embeds=$GLOBALS[\'wp_embed\']->run_shortcode(
    \'[embed id="myid"]\'. $video_url .\'[/embed]\'
);
希望这有帮助。

SO网友:Ethan O\'Sullivan

既然你说的是使用<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= 属性,但也可以添加任何其他您计划添加的属性,从而为您提供更大的灵活性。

Shortcode Example 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>

Shortcode Example 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>

相关推荐

Execute shortcodes in PHP

我在帖子编辑器中添加了一个地理位置快捷码,可以根据用户的位置显示不同的信息,将其放在帖子页面的内容中,效果非常好。如何在主题的PHP文件中执行此短代码[地理位置][地理位置]?我正在使用免费修改Wordpress主题,我想添加一个新的<span>[geolocation][/geolocation]Information text content</span> 但在主题的内部。php文件,我如何才能做到这一点?如果我直接加上<span>[geolocation][/ge