使WordPress所见即所得不会删除IFRAME

时间:2010-10-19 作者:Justin Jenkins

我有一个博客,出于各种原因,我经常需要在帖子中插入iFrame(不要问为什么相信我!)

当我使用“视觉”视图编辑我的帖子时,所见即所得(WYSIWYG)会不断地删除我的iframes。。。

我知道如果我使用“html”视图并且只从“html”视图查看/保存,我可以在帖子中保留iFrame。。。但是我会really 希望能够使用普通的所见即所得来编辑我的帖子without 不得不求助于“html”视图。

我可以做些什么来禁用此行为吗?我看到了this post, 这建议编辑wp-includes/js/tinymce/tiny_mce_config.php, 但我真的宁愿避免做那些可能只是在升级中中断的事情!

6 个回复
最合适的回答,由SO网友:Ethan Seifert 整理而成

如果您不想编写自己的代码,有一个插件允许嵌入<iframe>:

SO网友:bueltge

您可以自定义TinyMCE的过滤器,请参见以下示例<iframe>s和其他标签使用TinyMCE内部的谷歌地图。

function fb_change_mce_options( $initArray ) {

    // Comma separated string od extendes tags.
    // Command separated string of extended elements.
    $ext = \'pre[id|name|class|style],iframe[align|longdesc|name|width|height|frameborder|scrolling|marginheight|marginwidth|src]\';

    if ( isset( $initArray[\'extended_valid_elements\'] ) ) {
        $ext = \',\' . $ext;
    }
    $initArray[\'extended_valid_elements\'] = $ext;

    // Maybe, set tiny parameter verify_html
    //$initArray[\'verify_html\'] = false;

    return $initArray;
}
add_filter( \'tiny_mce_before_init\', \'fb_change_mce_options\' );
将其添加到自定义插件或函数。主题的php。您也可以在我的帖子中阅读更多信息:http://wpengineer.com/1963/customize-wordpress-wysiwyg-editor/

SO网友:WordpressDude

我不得不升级到wordpress 3.2.1,然后安装了Embed iFrame,效果很好。

在wordpress中从html切换到Visual时,iframe标记不再被删除。

SO网友:docker

在多站点环境中,superadmin以外的每个用户都会进行html筛选(因为potential security vulnerabilities). 基于this 您可以向编辑器添加add unfiltered\\u html功能。

/**
 * Enable unfiltered_html capability for Editors.
 *
 * @param  array  $caps    The user\'s capabilities.
 * @param  string $cap     Capability name.
 * @param  int    $user_id The user ID.
 * @return array  $caps    The user\'s capabilities, with \'unfiltered_html\' potentially added.
 */
function km_add_unfiltered_html_capability_to_editors( $caps, $cap, $user_id ) {
    if ( \'unfiltered_html\' === $cap && user_can( $user_id, \'editor\' ) ) {
        $caps = array( \'unfiltered_html\' );
    }
    return $caps;
}
add_filter( \'map_meta_cap\', \'km_add_unfiltered_html_capability_to_editors\', 1, 3 );

SO网友:SunnyRed

如果您不想为短代码解决方案使用其他插件,您可以在主题、插件或函数中添加这些内容。php手动添加。如有必要,您可能需要向密钥数组添加更多密钥。

add_shortcode( \'iframe\' , \'mycustom_shortcode_iframe\' );
function mycustom_shortcode_iframe($args, $content) {
    $keys = array("src", "width", "height", "scrolling", "marginwidth", "marginheight", "frameborder");
    $arguments = mycustom_extract_shortcode_arguments($args, $keys);
    return \'<iframe \' . $arguments . \'></iframe>\';
}

function mycustom_extract_shortcode_arguments($args, $keys) {
    $result = "";
    foreach ($keys as $key) {
        if (isset($args[$key])) {
            $result .= $key . \'="\' . $args[$key] . \'" \';
        }
    }
    return $result;
}
然后在您的帖子页面中,用法如下:

[iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=New+York+City,+New+York,+USA&amp;aq=0&amp;oq=new+york&amp;sll=51.238455,6.81435&amp;sspn=0.373151,1.056747&amp;ie=UTF8&amp;hq=&amp;hnear=New+York+City,+New+York,+Vereinigte+Staaten&amp;t=m&amp;z=11&amp;iwloc=A&amp;output=embed"]

SO网友:Brandon Barney

我发现使用Fusion编辑器插件在Wordpress中构建页面效果很好。

本视频演示了如何使用Fusion Builder(有关添加容器、冒号、元素和代码块的部分,请跳到4:15):https://www.youtube.com/watch?v=UDyNsnB_COA

我单击添加容器,然后单击添加元素,然后添加code block 而不是文本块(文本块将删除iframe,但代码块不会)。在我的代码块中,我粘贴iframe代码并发布。工作得很好,我不需要修改任何PHP文件!

结束

相关推荐

Iframe可以在一个页面上工作,但不能在一个页面上工作,为什么?

我试图将vimeo视频加载到一个页面中,但它告诉我:Given URL is not allowed by the Application configuration. 但在其他页面上,相同的iframe复制并粘贴到页面模板中,效果很好。<iframe src=\"http://player.vimeo.com/video/4426465\" width=\"400\" height=\"230\" frameborder=\"0\"></iframe>