私は様々な理由で投稿にiframeを挿入する必要があるというブログを持っています(なぜ私を信頼しているのか聞かないでください)。
「ビジュアル」ビューを使って投稿を編集すると、WYSIWYGは常にiframeを削除します...
"html"ビューを使用し、 "html"ビューからのみ表示/保存する場合は、iframeを投稿に含めることができます。ただし、本当にのようにします。私の投稿を編集するために通常のWYSIWYGを使用できるようにするにはwithout"html"ビューに頼らなければなりません。
この動作を無効にするためにできることはありますか?私は この記事 を見たことがありますが、これはwp-includes/js/tinymce/tiny_mce_config.php
を編集することを示唆していますが、実際にはアップグレードがうまくいかないようなことは避けたいと思います。
あなた自身のコードを書きたくないのであれば、<iframe>
を埋め込むことができるプラグインがあります。
それなら shortcode を以下のように使うだけです。
[iframe http://example.com 400 500]
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/ /
マルチサイト環境では、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 );
私はwordpress 3.2.1にアップグレードしなければならず、そしてそれからEmbed Iframeをインストールしなければなりません、そしてそれはとてもうまくいきました。
ワードプレスでhtmlからVisualへの切り替え時にiframe表記が削除されなくなりました。
私はWordpressで私のページを構築するためにFusion Editorプラグインを使うことがうまくいくことを発見しました。
このビデオでは、Fusion Builderの使い方を示します(コンテナ、列、要素、コードブロックの追加については、4:15にスキップしてください)。 https://www.youtube.com/watch?v=UDyNsnB_COA
クリックしてコンテナを追加し、次にadd elementをクリックしてから、テキストブロックの代わりに code block を追加します(テキストブロックはiframeを削除しますが、コードブロックは削除しません)。私のコードブロックに、私は自分のiframeコードを貼り付けて公開します。うまく機能し、PHPファイルを変更する必要はありません。
ショートコードソリューションに追加のプラグインを使用したくない場合は、これらの行に沿ってテーマ、プラグイン、または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&source=s_q&hl=de&geocode=&q=New+York+City,+New+York,+USA&aq=0&oq=new+york&sll=51.238455,6.81435&sspn=0.373151,1.056747&ie=UTF8&hq=&hnear=New+York+City,+New+York,+Vereinigte+Staaten&t=m&z=11&iwloc=A&output=embed"]