web-dev-qa-db-ja.com

WordPress WYSIWYGがiframeを削除しないようにする

私は様々な理由で投稿にiframeを挿入する必要があるというブログを持っています(なぜ私を信頼しているのか聞かないでください)。

「ビジュアル」ビューを使って投稿を編集すると、WYSIWYGは常にiframeを削除します...

"html"ビューを使用し、 "html"ビューからのみ表示/保存する場合は、iframeを投稿に含めることができます。ただし、本当にのようにします。私の投稿を編集するために通常のWYSIWYGを使用できるようにするにはwithout"html"ビューに頼らなければなりません。

この動作を無効にするためにできることはありますか?私は この記事 を見たことがありますが、これはwp-includes/js/tinymce/tiny_mce_config.phpを編集することを示唆していますが、実際にはアップグレードがうまくいかないようなことは避けたいと思います。

16
Justin Jenkins

あなた自身のコードを書きたくないのであれば、<iframe>を埋め込むことができるプラグインがあります。

それなら shortcode を以下のように使うだけです。

[iframe http://example.com 400 500]
9
Ethan Seifert

TinyMCEのフィルタをカスタマイズすることができます。<iframe>sおよび他のタグについての以下の例を参照して、TinyMCE内でGoogleマップを使用してください。

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' );

これをカスタムプラグインまたはテーマのfunctions.phpに追加します。また、あなたは私の記事でより多くの情報を読むことができます: http://wpengineer.com/1963/customize-wordpress-wysiwyg-editor/ /

23
bueltge

マルチサイト環境では、superadmin以外のすべてのユーザーがHTMLフィルタリングを受けます( 潜在的なセキュリティ脆弱性 )。に基づいて これ あなたはエディタにAdd unfiltered_html Capabilityを追加することができます。

/**
 * 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 );
1
docker

私はwordpress 3.2.1にアップグレードしなければならず、そしてそれからEmbed Iframeをインストールしなければなりません、そしてそれはとてもうまくいきました。

ワードプレスでhtmlからVisualへの切り替え時にiframe表記が削除されなくなりました。

1
WordpressDude

私はWordpressで私のページを構築するためにFusion Editorプラグインを使うことがうまくいくことを発見しました。

このビデオでは、Fusion Builderの使い方を示します(コンテナ、列、要素、コードブロックの追加については、4:15にスキップしてください)。 https://www.youtube.com/watch?v=UDyNsnB_COA

クリックしてコンテナを追加し、次にadd elementをクリックしてから、テキストブロックの代わりに code block を追加します(テキストブロックはiframeを削除しますが、コードブロックは削除しません)。私のコードブロックに、私は自分のiframeコードを貼り付けて公開します。うまく機能し、PHPファイルを変更する必要はありません。

0
Brandon Barney

ショートコードソリューションに追加のプラグインを使用したくない場合は、これらの行に沿ってテーマ、プラグイン、またはfunctions.phpに何か追加して手で追加することができます。必要ならば、keys-arrayにキーを追加する必要があるかもしれません。

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"]
0
SunnyRed