Hacer que WordPress WYSIWYG no elimine el iframe

14

Tengo un blog que a menudo necesito para insertar iframes en las publicaciones por varias razones (¡no preguntes por qué solo confía en mí!)

Cuando uso la vista "visual" para editar mis publicaciones, WYSIWYG elimina constantemente mis iframes ...

Sé que puedo mantener los iframes en la publicación si uso la vista "html" y solo veo / guardo desde la vista "html" ... sin embargo, realmente me gusta poder usar el WYSIWYG normal para editar mi publicación without teniendo que recurrir a la vista "html".

¿Hay algo que pueda hacer para deshabilitar este comportamiento? He visto esta publicación , que sugiere editar wp-includes/js/tinymce/tiny_mce_config.php , pero me gustaría realmente, más bien, evite hacer algo como eso que probablemente se rompería en una actualización.

    
pregunta Justin Jenkins 19.10.2010 - 09:13

6 respuestas

9

Si no quieres escribir tu propio código, hay un complemento para permitir incrustar un <iframe> :

Luego simplemente use el shortcode de esta manera:

[iframe http://example.com 400 500]
    
respondido por el Ethan Seifert 21.10.2010 - 05:15
22

Puede personalizar el filtro de TinyMCE, consulte el siguiente ejemplo de <iframe> s y otras etiquetas para usar Google Maps dentro de 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' );

Agregue esto a un complemento personalizado o functions.php del tema. También puede leer más información en mi publicación: enlace

    
respondido por el bueltge 19.10.2010 - 21:40
1

En un entorno multisitio, todos los usuarios que no sean superadmin obtienen el filtrado html (porque posibles vulnerabilidades de seguridad ). Basado en esto puede agregar Agregar unfiltered_html Añadir a los editores .

/**
 * 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 );
    
respondido por el docker 07.11.2017 - 13:09
1

Tuve que actualizar a wordpress 3.2.1 y luego instalé incrustar Iframe y funcionó muy bien.

Los indicadores de iframe ya no se eliminaron al cambiar de html a Visual en wordpress.

    
respondido por el WordpressDude 26.10.2011 - 08:04
0

Si no te gusta usar un complemento adicional para la solución de código corto, puedes agregar algo en esta línea a tu tema, complemento o funciones.php para agregarlo a mano. Si es necesario, es posible que necesites agregar algunas claves más a la matriz de claves.

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

Luego, en tu página de publicación, el uso sería así:

[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"]
    
respondido por el SunnyRed 27.05.2013 - 18:58
0

Encontré que usar el complemento Fusion Editor para compilar mis páginas en Wordpress funciona bien.

Este video muestra cómo usar Fusion Builder (pase a las 4:15 para la parte sobre cómo agregar contenedores, columnas, elementos y bloques de código): enlace

Hago clic para agregar un contenedor, luego hago clic en agregar elemento y luego agrego un bloque de código en lugar de un bloque de texto (el bloque de texto eliminará un iframe, pero el bloque de código no). En mi bloque de código pego mi código iframe y publico. Funciona muy bien y no tengo que modificar ningún archivo PHP!

    
respondido por el Brandon Barney 01.10.2018 - 22:32

Lea otras preguntas en las etiquetas