WordPress WYSIWYG'nin iframe'leri çıkarmamasını sağlayın


16

Çeşitli nedenlerle gönderilere iframe eklemem gereken bir blogum var (neden bana güvendiğini sorma!)

Yazılarımı düzenlemek için "görsel" görünümü kullandığımda, WYSIWYG sabit olarak iframe'leri çıkarır ...

Ben "html" görünümü kullanırsanız ve sadece "html" görünümünden görüntülemek / kaydetmek iframe sonrası tutabilir biliyorum ... ancak gerçekten benim yazı düzenlemek için normal WYSIWYG kullanabilmek istiyorum "html" görünümüne başvurmak zorunda kalmadan.

Bu davranışı devre dışı bırakmak için yapabileceğim bir şey var mı? Düzenlemeyi öneren bu gönderiyi gördüm wp-includes/js/tinymce/tiny_mce_config.php, ancak böyle bir şeyi yapmaktan kaçınmayı tercih ederim.


Bağlantı verdiğiniz gönderinin Otto tarafından düzenlenmeyen filtre çözümü de var. Bunu denedin mi?
Rarst

Biraz daha açıklığa kavuşturmak için, bunu yapmak için bazı PHP'leri kesmek zorunda kalmamı tercih ederim (muhtemelen unuturum, yükseltme ve kırma) ... bir ayar şeyse (PHP'de olsa bile) veya söyleyebileceğim bir şey, iframe'imin etrafına da biraz kod sarmak çok işe yarayacaktı. Bu noktada muhtemelen bunu yapmak için bazı javascript kullanacağım, ama bu dağınık görünüyor.
Justin Jenkins

1
Bunun için bir yapılandırma seçeneği yoktur ve editörde kodlamanın bir yolu yoktur (bir geçici çözüm varsa bir güvenlik deliği olacaktır). Bahsedilen kodu bir eklentiye koymak, bunu yapmanın en iyi yoludur ve yükseltmelerden de kurtulur (yükselttiğinizde eklentiler silinmez).
Jan Fabry

@Jan, Umarım tanımadığımız bir şeyi bilen biri vardır ... Değilse, teşekkürler. HTML değil, sadece görsel bölümde bir delik olması garip görünüyor? Görsel modda insanların burnunun altına bir şey atmanın daha kolay olduğunu anlıyorum ... Ama yine de.
Justin Jenkins

iframesvideo yerleştirmek için kullanışlıdır. <object>Oysa yöntem, flaş dayanır <iframe>çoğu video paylaşım siteleri bugünlerde destekleyen yöntem, HTML5 video için izin verir.
TRiG

Yanıtlar:


9

Kendi kodunuzu yazmak istemiyorsanız, aşağıdakileri eklemenize izin veren bir eklenti vardır <iframe>:

Sonra sadece böyle kısa kodu kullanın :

[iframe http://example.com 400 500]

@Ethan Seifert - Güzel cevap!
MikeSchinkel

Bu gerçekten sorum için geçerlidir, "hackleme" gerekmez. Hala HTML görünümünü kullanmaya ihtiyaç duyarken ... Teşekkürler.
Justin Jenkins

Bu cevaptaki eklenti artık güncel değil, ancak bunun yerine iyi görünüyor: wordpress.org/plugins/iframe
Tim Malone

23

TinyMCE filtresini özelleştirebilirsiniz, <iframe>Google Haritalar'ı TinyMCE içinde kullanmak için aşağıdaki örneklere ve diğer etiketlere bakın.

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

Bunu temanın özel bir eklentisine veya function.php dosyasına ekleyin. Ayrıca yazımda daha fazla bilgi okuyabilirsiniz: http://wpengineer.com/1963/customize-wordpress-wysiwyg-editor/


@bueltge - Güzel cevap. Bugün sitenizde bu yazıyı okudum. Bilirsiniz, TinyMCE için web'deki örneklerin çoğu WordPress bağlamında değildir ve WordPress bağlamında önemli ölçüde daha karmaşıktır. Açıkça iyi anlıyorsunuz. TinyMCE hakkında daha fazla bilgi verebileceğiniz çok şey var; üzerinde bir dizi blog yazısı yapmayı düşündün mü?
MikeSchinkel

en büyük sorunum zamandır; ama taslaklarımda bu konuyu yasaklayan başka bir yazım var ve belki de bunu önümüzdeki haftalarda yayınlayacağım. Verdiğiniz saygı için teşekkürler.
bueltge

1

Wordpress 3.2.1'e yükseltmek zorunda kaldım ve daha sonra Embed Iframe'i yükledim ve harika çalıştı.

Wordpress'te html'den Visual'a geçiş yaparken iframe etiketleri kaldırılmadı.


1

Çok bölgeli ortamda superadmin dışındaki her kullanıcı html filtrelemesi yapar (çünkü potansiyel güvenlik açıkları ). Dayalı bu editörlere unfiltered_html Yetenek ekle ekleyebilir.

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

0

Kısa kod çözümü için ek bir eklenti kullanmak istemiyorsanız, temanıza, eklentinize veya işlevlerinize bu satırlar boyunca bir şeyler ekleyebilirsiniz. Gerekirse, keys dizisine biraz daha anahtar eklemeniz gerekebilir.

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;
}

Sonra yazı sayfanızda kullanım şöyle olur:

[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"]

çalışmıyor. iframe'i aynı içerik olarak yayınlıyor
Ankit Agrawal

Kodun ne yapmasını istediğinizi bilmiyorum, ancak iframe'i içeriğe yazdığınız gibi yayınlamak, kodun yapması gerekiyor. Bu nedenle, iframe ön uç görünümünüzde görünürse, her şey beklendiği gibi çalışır.
SunnyRed

0

Sayfalarımı Wordpress'te oluşturmak için Fusion Editor eklentisini kullanmanın iyi çalıştığını gördüm.

Bu videoda Fusion Builder'ın nasıl kullanılacağı gösterilmektedir (kapsayıcı, kolon, öğe ve kod blokları ekleme bölümü için 4:15'e atlayın): https://www.youtube.com/watch?v=UDyNsnB_COA

Bir kapsayıcı eklemek için tıklatın, sonra öğe ekle'yi tıklatın ve sonra metin bloğu yerine bir kod bloğu eklerim (metin bloğu bir iframe'i kaldırır, ancak kod bloğu olmaz). Kod bloğumda iframe kodumu yapıştırıyorum ve yayınlıyorum. Harika çalışıyor ve herhangi bir PHP dosyasını değiştirmek zorunda değilim!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.