Cambiar del editor HTML al Visual y viceversa elimina completamente el contenido de la página

9 abr 2011, 18:22:49
Vistas: 2.07K
Votos: 1

Tengo una página (no una entrada de blog) donde necesito incrustar un iframe (para "integrar" el catálogo de productos de un servicio externo). Añadí el código del iframe en el editor HTML crudo y guardé la página. Visualicé la página y todo funcionaba.

Volví al editor y cambié del editor HTML crudo a la pestaña del editor Visual, añadí una línea de texto, y luego recordé que necesitaba añadir un atributo al código del iframe. Así que volví a la pestaña de HTML crudo.

Cuando hice esto, el contenido de la publicación desapareció por completo. Todo lo que había introducido en el editor, ya sea en HTML crudo o no, fue eliminado y la publicación quedó en blanco, como si acabara de crearla. Tuve que revertir a una revisión anterior para recuperarla.

Hasta ahora, la solución ha sido desactivar el editor Visual, pero tengo un socio no técnico y esa no es una solución ideal a largo plazo.

¿Hay alguna forma de controlar este comportamiento en WordPress? Estoy usando WordPress 3.1.1

Gracias

3
Comentarios

¿Usar una plantilla de página en su lugar? Evita todo el problema del editor eliminando el iframe.

t31os t31os
9 abr 2011 19:49:31

Esto no es específico de las páginas, lo mismo pasaría con una entrada. Eliminé la etiqueta page y agregué una etiqueta html.

Dougal Campbell Dougal Campbell
10 abr 2011 16:35:22

Sí, me doy cuenta de eso, mi punto era que este usuario quiere renderizar específicamente un iframe en una página, y usar una plantilla de página con nombre evitaría completamente el problema.

t31os t31os
11 abr 2011 15:00:24
Todas las respuestas a la pregunta 2
2

El editor de WordPress tiene un manejo deficiente de iFrames o HTML avanzado al cambiar entre el editor HTML y Visual (he experimentado este problema muchas veces).

Tu mejor opción es agregar una plantilla de página (page-{id}.php) con el iframe, o usar un plugin que agregue shortcodes de iFrame como el siguiente:

http://wordpress.org/extend/plugins/easy-iframe-loader/

Esto sería especialmente útil en un entorno con personas no técnicas editando las publicaciones.

9 abr 2011 23:38:47
Comentarios

Esta fue mi segunda opción. No la elegí principalmente porque no quería usar shortcodes.

¿Alguien más aparte de mí desearía que TinyMCE/WordPress simplemente tomara el HTML que ingresas y lo dejara tal cual?

red4d red4d
10 abr 2011 21:55:19

@red4d - Mi plugin hará exactamente lo que deseas que WordPress haga. Yo deseaba el mismo comportamiento, igual que tú, y descubrí que era posible con mucho trabajo en el núcleo de WP - http://wordpress.org/extend/plugins/preserved-html-editor-markup/

Marcus Pope Marcus Pope
1 sept 2012 01:12:39
1

He tenido este código en un plugin personalizado local durante un tiempo. O también podrías colocarlo en el functions.php de tu tema:

// Permitir iframe en TinyMCE
function tinymce_add_iframe( $arr = array() ) {
  $extra = 'iframe[id|class|title|style|align|frameborder|height|longdesc|marginheight|marginwidth|name|scrolling|src|width]';

  if ( isset( $arr['extended_valid_elements'] ) ) {
    // agregar al valor existente
    $arr['extended_valid_elements'] .= ',' . $extra;
  } else {
    // establecer el valor
    $arr['extended_valid_elements'] = $extra;
  }

  return $arr;
}

add_filter('tiny_mce_before_init','tinymce_add_iframe');

Esto le indica a TinyMCE (el editor visual) que permita la etiqueta iframe y todos sus atributos.

10 abr 2011 15:19:41
Comentarios

Esta es mi solución preferida. Deberías empaquetarla como un plugin y subirla al directorio de extensiones ;) Parece funcionar bastante bien (lo agregué a functions.php en lugar de crear un plugin). ¡Gracias!

red4d red4d
10 abr 2011 21:52:48