Cambiar del editor HTML al Visual y viceversa elimina completamente el contenido de la página
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

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.

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 - 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/

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.
