Faire en sorte que WordPress WYSIWYG ne supprime pas les fichiers iframe

14

J'ai un blog que j'ai souvent besoin d'insérer des iframes dans les messages pour diverses raisons (ne demandez pas pourquoi, faites-moi confiance!)

Lorsque j'utilise la vue "visuelle" pour éditer mes publications, le WYSIWYG supprime constamment mes iframes ...

Je sais que je peux conserver les iframes dans la publication si j'utilise la vue "html" et uniquement la vue / sauvegarde à partir de la vue "html" ... mais je serais vraiment souhaite pouvoir utiliser le WYSIWYG normal pour modifier mon message sans que ne soit obligé de recourir à la vue "html".

Puis-je faire quelque chose pour désactiver ce comportement? J'ai vu ce message , qui suggère de modifier wp-includes/js/tinymce/tiny_mce_config.php , mais je vraiment plutôt éviter de faire quelque chose comme ça qui risquerait tout simplement de casser une mise à niveau!

    
posée Justin Jenkins 19.10.2010 - 09:13

6 réponses

9

Si vous ne voulez pas écrire votre propre code, il existe un plugin pour permettre l'intégration de <iframe> :

Ensuite, utilisez simplement le code court comme suit:

[iframe http://example.com 400 500]
    
réponse donnée Ethan Seifert 21.10.2010 - 05:15
22

Vous pouvez personnaliser le filtre de TinyMCE, voir l'exemple suivant pour <iframe> s et les autres balises permettant d'utiliser Google Maps dans 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' );

Ajoutez ceci à un plugin personnalisé ou à un fichier functions.php du thème. Aussi, vous pouvez lire plus d'informations dans mon post: enlace

    
réponse donnée bueltge 19.10.2010 - 21:40
1

J'ai dû passer à WordPress 3.2.1 puis installer Embed Iframe. et cela a très bien fonctionné.

Les tages iframe n'étaient plus supprimés lors du basculement de HTML à Visual dans wordpress.

    
réponse donnée WordpressDude 26.10.2011 - 08:04
1

Dans les environnements multisites, tous les utilisateurs autres que superadmin bénéficient du filtrage html (car vulnérabilités de sécurité potentielles ). Basé sur ceci , vous pouvez ajouter Ajouter une capacité non filtrée_html aux éditeurs .

/**
 * 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 );
    
réponse donnée docker 07.11.2017 - 13:09
0

Si vous n'aimez pas utiliser un plugin supplémentaire pour la solution shortcode, vous pouvez ajouter quelque chose dans ce sens à votre thème, plugin ou functions.php pour l'ajouter à la main. Si nécessaire, vous devrez peut-être ajouter d'autres clés au tableau de clés.

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

Ensuite, dans votre page de publication, l'utilisation serait comme suit:

[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"]
    
réponse donnée SunnyRed 27.05.2013 - 18:58
0

J'ai constaté que le plug-in Fusion Editor pour créer mes pages dans Wordpress fonctionnait bien.

Cette vidéo montre comment utiliser Fusion Builder (passez à 4:15 pour la partie relative à l'ajout de conteneurs, colonnes, éléments et blocs de code): enlace

Je clique pour ajouter un conteneur, puis cliquez sur ajouter un élément, puis j'ajoute un bloc de code au lieu d'un bloc de texte (le bloc de texte supprimera un iframe, mais pas le bloc de code). Dans mon bloc de code, je colle mon code iframe et le publie. Fonctionne très bien et je n'ai pas à modifier les fichiers PHP!

    
réponse donnée Brandon Barney 01.10.2018 - 22:32

Lire d'autres questions sur les étiquettes